# Burs-IA Utils: catálogo completo / full catalog

> 492 utilidades deterministas, gratis y sin llave, para agentes de IA, con foco en Colombia y Latinoamérica: NIT, festivos y días hábiles, IVA/UVT, cédulas, CUFE de facturas electrónicas, RFC, CPF, CUIT y RUT; además JSON, hashes, fechas y formatos web. Hecho por Burs-IA en Colombia.
> EN: 492 free, keyless, deterministic utilities for AI agents, focused on Colombia and Latin America: NIT, holidays and business days, VAT/UVT, cédulas, e-invoice CUFE, RFC, CPF, CUIT and RUT; plus JSON, hashes, dates and web formats. Made by Burs-IA in Colombia.

Versión 1.7.0. Servidor MCP remoto (Streamable HTTP, respuestas JSON, sin SSE) y API HTTP de Burs-IA (https://burs-ia.com), servido en https://bursia-utils-production.up.railway.app. Las 492 herramientas son funciones puras: sin red, sin estado, sin cuenta y sin llave. Contacto: founder@burs-ia.com.

EN: Version 1.7.0. Remote MCP server (Streamable HTTP, JSON responses, no SSE) and HTTP API by Burs-IA (https://burs-ia.com), served at https://bursia-utils-production.up.railway.app. The 492 tools are pure functions: no network access, no state, no account and no key. Contact: founder@burs-ia.com.

Every result carries a `recibo` (receipt): SHA-256 hashes of the RFC 8785 canonical input and output plus the tool version. Receipts are unsigned: they prove consistency, not origin (anyone can compute the same hashes). / Cada resultado trae un `recibo`; es sin firma: prueba consistencia, no origen.

Índice corto / short index: https://bursia-utils-production.up.railway.app/llms.txt

## Traductor ONDA y ayudas de protocolo / ONDA translator and protocol helpers (/mcp/onda, 14)

- [`x402-cost-estimate` · Estimar costo de llamadas x402](https://bursia-utils-production.up.railway.app/tools/x402-cost-estimate): Estima el costo de un lote de llamadas pagadas por uso (p. ej. x402 a USD 0,001) en USD y unidades base de USDC, y cuántas llamadas cubre un presupuesto. EN: Estimates the cost of a batch of pay-per-call API requests (e.g. x402 at $0.001/call) in USD and USDC base units, after a free allowance, and how many calls a budget buys. Exact decimal math.
- [`tool-definition-convert` · Convertir definiciones de herramientas](https://bursia-utils-production.up.railway.app/tools/tool-definition-convert): Convierte una definición de herramienta entre los formatos MCP, OpenAI (function calling) y Anthropic (tool use). EN: Converts a tool definition (name, description, JSON Schema parameters) between MCP (inputSchema), OpenAI function-calling (function.parameters) and Anthropic tool-use (input_schema) shapes, validating the name.
- [`onda-traducir` · ONDA: traducir entre protocolos de agentes](https://bursia-utils-production.up.railway.app/tools/onda-traducir): Recibe un Agent Card A2A, server.json/tools de MCP, OpenAPI/Swagger, manifiesto de pago x402, llms.txt o una descripción en texto (es/en/pt; JSON roto se repara) y devuelve las traducciones A2A, MCP, OpenAPI y x402, ejemplos de llamada y cada supuesto. EN: Accepts an A2A Agent Card, MCP server.json/tools, OpenAPI/Swagger, x402 payment manifest, llms.txt or a plain es/en/pt description (JSON string or object, broken JSON repaired) and returns A2A, MCP, OpenAPI and x402 translations, call examples and every assumption.
- [`x402-payment-decode` · Decodificar cabecera de pago x402](https://bursia-utils-production.up.railway.app/tools/x402-payment-decode): Decodifica un valor X-PAYMENT / PAYMENT-SIGNATURE de x402 (JSON en base64, v1 o v2) y revisa su estructura: esquema, red, campos EIP-3009 y formato de firma; opcionalmente lo compara con los PaymentRequirements. Firma no verificada. EN: Decodes an x402 X-PAYMENT / PAYMENT-SIGNATURE value (base64 JSON, v1 or v2) and checks its structure: scheme, network, EIP-3009 authorization fields and signature format; optionally compares it with the PaymentRequirements. Signature not verified.
- [`x402-requirements-lint` · Revisar requisitos de pago x402](https://bursia-utils-production.up.railway.app/tools/x402-requirements-lint): Revisa un cuerpo 402 de x402, un valor PAYMENT-REQUIRED, accepts[] o un PaymentRequirements (v1 o v2): campos obligatorios, redes CAIP-2, asset y payTo, montos atómicos, maxTimeoutSeconds, URL, mimeType, outputSchema y extensión Bazaar. EN: Lints an x402 402 body, PAYMENT-REQUIRED value, accepts[] or one PaymentRequirements (v1 or v2): required fields, CAIP-2 networks, asset and payTo formats, atomic amounts, maxTimeoutSeconds, resource URL, mimeType, outputSchema and Bazaar extension shape.
- [`x402-replay-check` · Revisar repetición y vencimiento x402](https://bursia-utils-production.up.railway.app/tools/x402-replay-check): Comprueba un pago x402 (cabecera, payload o autorización EIP-3009) frente a una hora dada y una lista de nonces ya vistos: nonce repetido, aún no válido, vencido o por vencer, y validBefore más lejos de ahora que maxTimeoutSeconds. EN: Checks an x402 payment (header value, payload or EIP-3009 authorization) against a given time and a supplied list of seen nonces: replayed nonce, not yet valid, expired or near expiry, and validBefore further from now than maxTimeoutSeconds.
- [`x402-payment-response-verify` · Revisar respuesta de liquidación x402](https://bursia-utils-production.up.railway.app/tools/x402-payment-response-verify): Comprueba una liquidación X-PAYMENT-RESPONSE / PAYMENT-RESPONSE de x402 frente a los PaymentRequirements dados (y opcionalmente el pago): éxito, formato del hash, red, pagador, payTo y monto. Solo consistencia de los datos dados, no lo registrado en la cadena. EN: Checks an x402 X-PAYMENT-RESPONSE / PAYMENT-RESPONSE settlement value against given PaymentRequirements (and optionally the payment sent): success, transaction hash format, network, payer, payTo, amount. Consistency of given data only, not on-chain truth.
- [`mcp-server-json-lint` · Revisar server.json del MCP Registry](https://bursia-utils-production.up.railway.app/tools/mcp-server-json-lint): Revisa un server.json del MCP Registry: URL y fecha de $schema, nombre en DNS inverso (namespace/name), descripción de hasta 100 caracteres, versión exacta, repositorio, packages (registryType, identifier, transport) y remotes (streamable-http o sse sobre https), y campos snake_case antiguos. EN: Lints an MCP Registry server.json: $schema URL and date, reverse-DNS name (namespace/name), description up to 100 characters, exact version, repository, packages (registryType, identifier, transport) and remotes (streamable-http or sse over https), plus snake_case fields from older schemas.
- [`mcp-protocol-compat` · Compatibilidad del initialize de MCP](https://bursia-utils-production.up.railway.app/tools/mcp-protocol-compat): Compara una solicitud initialize de MCP y su respuesta (revisiones hasta 2025-11-25; desde 2026-07-28 no hay initialize, y lo informa): negociación de versión, capacidades por revisión, capacidades requeridas que faltan, nombres desconocidos y clientInfo/serverInfo. EN: Compares an MCP initialize request and its response (revisions up to 2025-11-25; from 2026-07-28 there is no initialize, which it reports): version negotiation, client and server capabilities per revision, missing required and unknown capabilities, clientInfo/serverInfo.
- [`mcp-tools-lint` · Revisar herramientas MCP](https://bursia-utils-production.up.railway.app/tools/mcp-tools-lint): Revisa definiciones de herramientas MCP: nombres, descripciones, inputSchema, requeridos y propiedades sin documentar; devuelve un puntaje 0-100. EN: Lints MCP tool definitions (a tools/list result or array): name syntax and uniqueness, description presence/length, inputSchema root type, required keys defined in properties, undocumented properties, and annotation hints; returns a 0-100 score.
- [`agent-card-validate` · Validar Agent Card A2A](https://bursia-utils-production.up.railway.app/tools/agent-card-validate): Revisa una Agent Card de A2A (Agent2Agent): nombre, descripción, url https, versión, capacidades, modos y habilidades. Solo estructura. EN: Checks an A2A (Agent2Agent) Agent Card JSON for the core fields: name, description, https url, version, capabilities, default input/output modes and skills (id, name, description, tags), plus provider and security hints. Structural check only.
- [`openapi-summary` · Resumir y revisar OpenAPI](https://bursia-utils-production.up.railway.app/tools/openapi-summary): Resume un documento OpenAPI 3.x: título, versión, servidores, operaciones y problemas (sin operationId, sin respuestas, respuestas 402). EN: Summarizes a supplied OpenAPI 3.x document: title, version, servers, operations (method, path, operationId, summary), security, and lint issues (missing operationId/summary, no responses, 402 payment responses).
- [`agent-readiness-checklist` · Lista de preparación para agentes](https://bursia-utils-production.up.railway.app/tools/agent-readiness-checklist): Puntúa qué tan preparado está un sitio para agentes de IA a partir del contenido pegado (robots.txt, llms.txt, HTML): acceso de rastreadores, llms.txt, metadatos y JSON-LD. Revisión básica. EN: Scores how ready a site is for AI agents from pasted content (robots.txt, llms.txt, homepage HTML): AI crawler access, llms.txt validity, title/description/canonical/lang, JSON-LD and sitemap. A free basic check, not a full audit.
- [`recibo-verify` · Verificar recibo de Burs-IA](https://bursia-utils-production.up.railway.app/tools/recibo-verify): Verifica un recibo: recalcula los SHA-256 de la entrada, la salida y el recibo canónicos (RFC 8785) y, con rerun, vuelve a ejecutar la herramienta. Sin firma: prueba consistencia, no origen. Sin rerun informa consistent, no valid. EN: Checks a receipt (recibo): recomputes the SHA-256 of the RFC 8785 (JCS) canonical input, output and receipt, and with rerun re-runs the tool. Unsigned: proves consistency, not origin. Without rerun it reports consistent, not valid.

## Colombia / Colombia (/mcp/colombia, 18)

- [`co-cufe-verify` · Verificar CUFE de factura DIAN](https://bursia-utils-production.up.railway.app/tools/co-cufe-verify): Recalcula el CUFE de una factura electrónica de venta colombiana (SHA-384 de los 15 campos definidos por la DIAN: número, fecha, hora, valores, impuestos 01/04/03, total, NIT, clave técnica, ambiente) y lo compara con un CUFE dado; o solo revisa el formato de un CUFE/CUDE. EN: Recomputes the CUFE of a Colombian electronic sales invoice (SHA-384 of the 15 fields defined by DIAN: number, date, time, amounts, tax codes 01/04/03, total, NITs, technical key, environment) and compares it with a given CUFE; or checks a CUFE/CUDE format only.
- [`co-holidays` · Festivos de Colombia](https://bursia-utils-production.up.railway.app/tools/co-holidays): Lista los 18 festivos nacionales de Colombia de un año, aplicando la Ley Emiliani (traslado a lunes) y las fechas según la Pascua. EN: Lists the 18 Colombian national holidays for a year, applying Ley 51 de 1983 (Ley Emiliani) Monday moves and Easter-based dates (Holy Week, Ascension, Corpus Christi, Sacred Heart).
- [`co-is-holiday` · ¿Es festivo en Colombia?](https://bursia-utils-production.up.railway.app/tools/co-is-holiday): Indica si una fecha es festivo nacional en Colombia (con nombre), fin de semana y si es día hábil. EN: Says whether a date is a Colombian national holiday (with its name), a Sunday or Saturday, and whether it is a business day (Monday-Friday, or Monday-Saturday if saturday_is_business).
- [`co-business-days-between` · Días hábiles en Colombia entre fechas](https://bursia-utils-production.up.railway.app/tools/co-business-days-between): Cuenta días hábiles entre dos fechas en Colombia, excluyendo domingos, sábados (opcional) y festivos nacionales. EN: Counts business days (días hábiles) between two dates in Colombia, excluding Sundays, Saturdays (unless saturday_is_business) and national holidays; lists holidays skipped.
- [`co-business-days-add` · Sumar días hábiles en Colombia](https://bursia-utils-production.up.railway.app/tools/co-business-days-add): Suma o resta N días hábiles a una fecha usando los festivos de Colombia (plazos legales, facturas, SLA). EN: Adds or subtracts N business days (días hábiles) to a date using Colombian national holidays, e.g. for legal deadlines, invoices or SLA due dates.
- [`co-nit` · Dígito de verificación del NIT](https://bursia-utils-production.up.railway.app/tools/co-nit): Calcula el dígito de verificación (DV) de un NIT con el método mod 11 publicado por la DIAN, valida el DV dado y formatea (900.373.913-4); práctica estándar en facturación. EN: Computes the DIAN verification digit (DV) of a Colombian NIT business tax ID with DIAN's published mod-11 method, validates a given DV and formats it (900.373.913-4). DV computation is standard practice in invoicing.
- [`co-cedula-format` · Formato de cédula colombiana](https://bursia-utils-production.up.railway.app/tools/co-cedula-format): Verifica la SINTAXIS de una cédula colombiana (3 a 10 dígitos) y la formatea con puntos. La cédula no tiene dígito de control. EN: Checks the SYNTAX of a Colombian cédula de ciudadanía number (digits only, 3-10 digits, no leading zero) and formats it with dot separators. Cédulas have no check digit, so validity cannot be confirmed offline.
- [`co-phone-validate` · Validar teléfono colombiano](https://bursia-utils-production.up.railway.app/tools/co-phone-validate): Verifica la SINTAXIS de un teléfono colombiano (celular 3XX, fijo 60X con región, 01 8000) y devuelve formato E.164. No verifica que la línea exista. EN: Checks the SYNTAX of a Colombian phone number (mobile 3XX XXX XXXX; fixed lines in the 2021 10-digit plan 60X XXX XXXX with region; 01 8000 toll-free) and returns E.164. Does not check that the line exists.
- [`co-plate-validate` · Validar placa colombiana](https://bursia-utils-production.up.railway.app/tools/co-plate-validate): Clasifica una placa colombiana por SINTAXIS: carro (ABC123), moto (ABC12D), remolque (R12345), diplomática. No consulta el RUNT. EN: Classifies a Colombian license plate by SYNTAX: car/public service (ABC123), motorcycle (ABC12D, or older ABC12), trailer/semitrailer (R12345 / S12345), diplomatic (CD/CC/OI + 4 digits). Does not check registration in RUNT.
- [`co-dane-department` · Códigos DANE de departamento](https://bursia-utils-production.up.railway.app/tools/co-dane-department): Consulta los 33 códigos DIVIPOLA de departamentos (32 + Bogotá D.C.) por código, nombre o prefijo de código municipal, con su capital. EN: Looks up Colombia's 33 DIVIPOLA department-level codes (32 departments + Bogotá D.C.) by code, name (accent-insensitive) or a 5-digit municipality code prefix, returning the capital and its municipality code.
- [`co-amount-in-words` · Valor en letras para cheques (Colombia)](https://bursia-utils-production.up.railway.app/tools/co-amount-in-words): Escribe un valor en pesos en letras como en cheques, facturas y contratos colombianos ("UN MILLÓN DOSCIENTOS MIL PESOS M/CTE"). EN: Writes a peso amount in words in the format used on Colombian cheques, invoices and contracts, e.g. "UN MILLÓN DOSCIENTOS MIL PESOS M/CTE", with cents as fraction (50/100) or words.
- [`co-cop-format` · Formatear pesos colombianos (COP)](https://bursia-utils-production.up.railway.app/tools/co-cop-format): Formatea un valor en pesos colombianos ($ 1.234.567, puntos de miles y coma decimal), con 0 o 2 decimales y código COP opcional. EN: Formats an amount as Colombian pesos the way it is written in Colombia ($ 1.234.567 — dot thousands, comma decimals), with 0 or 2 decimals and an optional COP code.
- [`co-cop-parse` · Leer montos en pesos colombianos](https://bursia-utils-production.up.railway.app/tools/co-cop-parse): Convierte textos de dinero en estilo colombiano ("$ 1.234.567,50", "1,5 millones", "$3 mil") en número. EN: Parses money text written in Colombian style ("$ 1.234.567,50", "COP 2.500", "1.5 millones", "$3 mil") into a number, handling dot thousands, comma decimals and millones/mil words.
- [`co-iva` · Calcular IVA de Colombia](https://bursia-utils-production.up.railway.app/tools/co-iva): Calcula el IVA colombiano (19 % general, 5 % reducido o 0 %): suma a una base o extrae de un total con IVA, redondeando a pesos. EN: Adds or extracts Colombian IVA at the general 19%, reduced 5% or 0% (exento) rate: from a base before tax or from a total that includes IVA, rounding to whole pesos by default.
- [`co-gmf` · Calcular GMF (4x1000)](https://bursia-utils-production.up.railway.app/tools/co-gmf): Calcula el GMF (cuatro por mil, 0,4 %) de un retiro o transferencia, con la exención mensual opcional de 350 UVT en una cuenta marcada. EN: Computes Colombia's financial transactions tax (GMF, "cuatro por mil") of 0.4% on a withdrawal or transfer, optionally applying the monthly 350 UVT exemption for one designated account.
- [`co-uvt-convert` · UVT ↔ pesos (Colombia)](https://bursia-utils-production.up.railway.app/tools/co-uvt-convert): Convierte entre UVT y pesos para 2024 ($47.065), 2025 ($49.799) o 2026 ($52.374, Resolución DIAN 000238 de 2025). EN: Converts between UVT (Unidad de Valor Tributario) and Colombian pesos for 2024 ($47.065), 2025 ($49.799) or 2026 ($52.374, DIAN Resolución 000238 de 2025).
- [`co-retencion-salarios` · Retención en la fuente por salarios](https://bursia-utils-production.up.railway.app/tools/co-retencion-salarios): Calcula la retención en la fuente mensual por salarios, procedimiento 1 (tabla del art. 383 del E.T. en UVT, renta exenta del 25 %, límite del 40 %), con la UVT 2026; cita norma y URL de cada dato y marca lo no verificado. EN: Computes Colombian monthly income-tax withholding on wages by procedure 1 (Estatuto Tributario art. 383 table in UVT, 25% exempt income, 40% cap) with the 2026 UVT, citing the rule and URL of each figure and flagging what is not verified.
- [`co-liquidacion-laboral` · Liquidación de prestaciones sociales](https://bursia-utils-production.up.railway.app/tools/co-liquidacion-laboral): Calcula la liquidación de prestaciones sociales en Colombia para un salario fijo entre dos fechas: cesantías, intereses del 12 %, prima de servicios y vacaciones pendientes, con el auxilio de transporte 2026, días de 360, normas y puntos no verificados. EN: Computes Colombian employment-termination benefits for a fixed salary between two dates: severance (cesantías), its 12% interest, service bonus (prima) and unused vacation pay, with the 2026 transport allowance, 360-day counting, legal sources and unverified points.

## Documentos y cuentas de LatAm y España / Latin American and Spanish IDs (/mcp/latam-ids, 11)

- [`mx-clabe-validate` · Validar CLABE (México)](https://bursia-utils-production.up.railway.app/tools/mx-clabe-validate): Valida una CLABE interbancaria mexicana de 18 dígitos: estructura (banco 3, plaza 3, cuenta 11, dígito 1) y el dígito de control ponderado 3-7-1 módulo 10. Solo valida; no calcula dígitos faltantes. EN: Validates an 18-digit Mexican CLABE interbank account number: structure (bank 3, branch/plaza 3, account 11, check digit 1) and the weighted 3-7-1 mod-10 check digit. Validation only; it never computes a missing digit.
- [`ar-cbu-validate` · Validar CBU (Argentina)](https://bursia-utils-production.up.railway.app/tools/ar-cbu-validate): Valida una CBU/CVU argentina de 22 dígitos: bloque 1 (entidad 3 + sucursal 4 + dígito, pesos 7139713) y bloque 2 (cuenta 13 + dígito, pesos 3971…). Informa cada bloque. Solo valida. EN: Validates a 22-digit Argentine CBU/CVU: block 1 (bank 3 + branch 4 + check digit, weights 7139713) and block 2 (account 13 + check digit, weights 3971…). Reports each block. Validation only.
- [`es-dni-nie-validate` · Validar DNI/NIE (España)](https://bursia-utils-production.up.railway.app/tools/es-dni-nie-validate): Valida un DNI español (8 dígitos + letra) o NIE (X/Y/Z + 7 dígitos + letra) con la letra de control módulo 23 del Ministerio del Interior. Solo valida; no devuelve la letra esperada. EN: Validates a Spanish DNI (8 digits + letter) or NIE (X/Y/Z + 7 digits + letter) with the official mod-23 control letter (Ministerio del Interior). Validation only; it never returns the expected letter.
- [`ec-id-validate` · Validar cédula o RUC (Ecuador)](https://bursia-utils-production.up.railway.app/tools/ec-id-validate): Valida una cédula ecuatoriana (10 dígitos: provincia 01-24, tercer dígito 0-5, coeficientes 2-1-2-1… módulo 10) o un RUC de persona natural (cédula + establecimiento 001-999). Los RUC de sociedades o públicos se informan como no soportados. EN: Validates an Ecuadorian cédula (10 digits: province 01-24, third digit 0-5, coefficients 2-1-2-1… mod 10) or a natural-person RUC (cédula + establishment 001-999). Company/public RUCs are reported as unsupported. Validation only.
- [`mx-rfc-validate` · Validar RFC (México)](https://bursia-utils-production.up.railway.app/tools/mx-rfc-validate): Valida un RFC mexicano (SAT): 13 caracteres persona física o 12 moral, fecha y dígito verificador mod 11. EN: Validates a Mexican RFC (SAT taxpayer ID): 13 characters for individuals or 12 for companies, embedded date, and the SAT mod-11 check digit (homoclave last character). Returns valid/invalid only.
- [`mx-curp-validate` · Validar CURP (México)](https://bursia-utils-production.up.railway.app/tools/mx-curp-validate): Valida una CURP mexicana (18 caracteres): estructura, fecha de nacimiento, sexo, entidad y dígito verificador RENAPO. EN: Validates a Mexican CURP (18 characters): structure, birth date, sex (H/M/X), state code, and the RENAPO check digit; returns valid/invalid and the decoded fields.
- [`cl-rut` · Validar RUT/RUN (Chile)](https://bursia-utils-production.up.railway.app/tools/cl-rut): Valida un RUT/RUN chileno con su dígito verificador mod 11 (0-9 o K) y lo formatea. Solo valida: el dígito debe venir incluido. EN: Validates a Chilean RUT/RUN including its mod-11 check digit (0-9 or K) and returns it formatted as 12.345.678-5. Validation only: the check digit must be supplied and is never computed.
- [`ar-cuit-validate` · Validar CUIT/CUIL (Argentina)](https://bursia-utils-production.up.railway.app/tools/ar-cuit-validate): Valida un CUIT/CUIL argentino (11 dígitos, dígito verificador mod 11) e identifica el tipo de prefijo. EN: Validates an Argentine CUIT/CUIL (11 digits: type prefix, DNI, mod-11 check digit with weights 5432765432) and identifies the prefix type (person or company).
- [`pe-ruc-validate` · Validar RUC (Perú)](https://bursia-utils-production.up.railway.app/tools/pe-ruc-validate): Valida un RUC peruano (11 dígitos, dígito verificador SUNAT mod 11) e identifica el tipo de contribuyente. EN: Validates a Peruvian RUC (11 digits) with the SUNAT mod-11 check digit (weights 5432765432) and identifies the taxpayer type from its prefix (10 person, 15/17 non-domiciled, 20 company).
- [`br-cpf-validate` · Validar CPF (Brasil)](https://bursia-utils-production.up.railway.app/tools/br-cpf-validate): Valida un CPF brasileño (11 dígitos, dos dígitos verificadores) y lo formatea (529.982.247-25). EN: Validates a Brazilian CPF (11 digits, two mod-11 check digits), rejecting repeated-digit numbers, and formats it as 529.982.247-25.
- [`br-cnpj-validate` · Validar CNPJ (Brasil)](https://bursia-utils-production.up.railway.app/tools/br-cnpj-validate): Valida un CNPJ brasileño, incluido el formato alfanumérico vigente desde julio de 2026, con sus dos dígitos verificadores. EN: Validates a Brazilian CNPJ, including the alphanumeric format introduced from July 2026 (letters valued as ASCII − 48), with both mod-11 check digits; formats as 11.222.333/0001-81.

## Español / Spanish language (/mcp/espanol, 11)

- [`es-syllabify` · Separar en sílabas](https://bursia-utils-production.up.railway.app/tools/es-syllabify): Separa palabras en sílabas según las reglas ortográficas de la RAE: diptongos, triptongos, hiatos (í/ú con tilde), grupos inseparables (pl, br, tr…), ch/ll/rr y la u muda de que/gui. Las divisiones por prefijo (sub-, des-) pueden variar. EN: Splits Spanish words into syllables with the RAE orthographic rules: diphthongs, triphthongs, hiatus (accented í/ú), inseparable clusters (pl, br, tr…), ch/ll/rr and silent u in que/gui. Prefix-based splits (sub-, des-) may differ.
- [`es-stress` · Acentuación y tilde en español](https://bursia-utils-production.up.railway.app/tools/es-stress): Para una palabra: sílabas, sílaba tónica (por la tilde o la regla general), clase (aguda, llana, esdrújula, sobresdrújula) y si la tilde escrita cumple las reglas de la RAE. Si se indica la sílaba tónica deseada, devuelve la grafía correcta. EN: For a Spanish word: syllables, stressed syllable (from the written accent or the default rule), class (aguda, llana, esdrújula, sobresdrújula) and whether the written accent follows the RAE rules. Given the intended stressed syllable, returns the correct spelling.
- [`es-number-parse` · Leer números escritos en español](https://bursia-utils-production.up.railway.app/tools/es-number-parse): Convierte números en palabras o cifras: «tres mil cuatrocientos veintiuno» → 3421, «dos coma cinco millones», «menos», escala larga (mil millones = 10⁹). Cifras como «1.250» (un separador + 3 dígitos) son ambiguas: indique decimal_separator. EN: Converts Spanish number words or digits to a number: "tres mil cuatrocientos veintiuno" → 3421, "dos coma cinco millones", "menos", long scale (mil millones = 10⁹). "1.250"-style digits (one separator + 3 digits) are ambiguous: pass decimal_separator.
- [`es-date-parse` · Leer fechas escritas en español](https://bursia-utils-production.up.railway.app/tools/es-date-parse): Encuentra y convierte una fecha escrita en español: «tres de marzo de 2026», «primero de enero del dos mil veintiséis», «15/03/2026» (día primero) y hoy/mañana/ayer respecto a una fecha de referencia. Devuelve ISO 8601 y el día de la semana. EN: Finds and parses a date written in Spanish: "tres de marzo de 2026", "1.º de enero del dos mil veintiséis", "15/03/2026" (day first), and hoy/mañana/ayer relative to a given reference date. Returns ISO 8601 (proleptic Gregorian; 2-digit years are 20xx) and the weekday.
- [`es-sentence-split` · Dividir oraciones en español](https://bursia-utils-production.up.railway.app/tools/es-sentence-split): Divide un texto en español en oraciones, considerando ¿…? y ¡…!, puntos suspensivos, decimales y miles (3.5, 1.000), iniciales (J. R.) y abreviaturas comunes (Sr., Dra., Uds., pág., núm., Cra., EE. UU., S.A.S.). Devuelve posiciones. EN: Splits Spanish text into sentences, aware of ¿…? and ¡…!, ellipses, decimals and thousands (3.5, 1.000), initials (J. R.) and common abbreviations (Sr., Dra., Uds., pág., núm., Cra., EE. UU., S.A.S.). Returns offsets.
- [`es-number-to-words` · Número en letras (español)](https://bursia-utils-production.up.railway.app/tools/es-number-to-words): Escribe un entero hasta 10^18 en palabras en español (escala larga), con género y apócope opcional (veintiún, un). EN: Spells an integer up to 10^18 in Spanish words (long scale: millón, mil millones, billón), with masculine/feminine agreement and optional apocope (veintiún, un) for use before a noun.
- [`mx-amount-in-words` · Importe con letra (México, CFDI)](https://bursia-utils-production.up.railway.app/tools/mx-amount-in-words): Escribe un importe en letras al estilo de facturas (CFDI) y cheques en México: "MIL DOSCIENTOS PESOS 50/100 M.N.". EN: Writes a peso amount in words in the style used on Mexican invoices (CFDI) and checks: "MIL DOSCIENTOS PESOS 50/100 M.N.".
- [`es-ordinal` · Números ordinales en español](https://bursia-utils-production.up.railway.app/tools/es-ordinal): Escribe ordinales en español del 1 al 999 (primero, vigésimo tercero…) con género, apócope y abreviatura (1.º, 1.ª). EN: Writes 1-999 as a Spanish ordinal in words (primero, vigésimo tercero, centésimo) with gender and apocope (primer, tercer) options, plus the abbreviation (1.º, 1.ª).
- [`es-slug` · Slug en español (con ñ)](https://bursia-utils-production.up.railway.app/tools/es-slug): Crea un slug desde texto en español sin convertir ñ en n ("año" no queda "ano"): ñ → ni/ny/nn o se conserva; quita tildes y opcionalmente palabras vacías. EN: Builds a URL slug from Spanish text without collapsing ñ into n (so "año" does not become "ano"): ñ becomes "ni", "ny", "nn" or is kept; accents are removed and stopwords can be dropped.
- [`es-compare` · Comparar sin tildes (español)](https://bursia-utils-production.up.railway.app/tools/es-compare): Compara dos textos en español ignorando mayúsculas y tildes (la ñ sigue distinta de la n); también da el orden. EN: Compares two Spanish strings ignoring case and accents (and optionally punctuation and extra spaces) using Spanish collation, where ñ stays distinct from n; also gives sort order.
- [`es-name-case` · Mayúsculas de nombres en español](https://bursia-utils-production.up.railway.app/tools/es-name-case): Capitaliza nombres propios al estilo español, con partículas en minúscula (de, del, de la, y…), guiones y apóstrofos. EN: Capitalizes personal or place names in Spanish style, keeping particles lowercase (de, del, de la, y, e, los, las, da, van, von) except at the start, and handling hyphens and apostrophes.

## Utilidades para flujos de agentes / Agent workflow helpers (/mcp/agentes, 18)

- [`token-estimate` · Estimar tokens de LLM](https://bursia-utils-production.up.railway.app/tools/token-estimate): Estima heurísticamente cuántos tokens de LLM usa un texto, con un rango de ±25 %. El conteo real depende del tokenizador de cada modelo. EN: Heuristically estimates how many LLM tokens a text uses (Latin text ~4 chars/token, CJK ~1 char/token, code and punctuation denser) with a ±25% range. Real counts depend on each model's tokenizer.
- [`prompt-template-fill` · Rellenar plantilla de prompt](https://bursia-utils-production.up.railway.app/tools/prompt-template-fill): Rellena marcadores {{variable}} de una plantilla con valores, informando faltantes y no usados; sin ejecutar código. EN: Fills {{variable}} placeholders (dotted paths allowed, optional {{name|default}}) from a values object, reporting missing and unused variables; strict mode fails on missing values. No code execution.
- [`json-repair` · Reparar JSON roto](https://bursia-utils-production.up.railway.app/tools/json-repair): Repara JSON casi válido típico de salidas de LLM (comillas simples, comas, claves sin comillas, True/None, llaves sin cerrar) y devuelve el valor y los arreglos. EN: Best-effort repair of almost-JSON typical of LLM output: code fences, comments, single quotes, unquoted keys, trailing or missing commas, Python True/False/None, NaN, unclosed strings and brackets. Returns parsed value and fixes applied.
- [`json-extract` · Extraer JSON de un texto](https://bursia-utils-production.up.railway.app/tools/json-extract): Encuentra y analiza objetos/arreglos JSON dentro de un texto libre (p. ej. respuesta de un LLM), con reparación opcional. EN: Finds and parses JSON objects/arrays embedded in free text (e.g. an LLM reply): fenced ```json blocks first, then balanced {…}/[…] spans; optionally repairs near-JSON.
- [`code-blocks-extract` · Extraer bloques de código](https://bursia-utils-production.up.railway.app/tools/code-blocks-extract): Extrae bloques de código delimitados (``` o ~~~) de Markdown o respuestas de LLM, con su lenguaje. EN: Extracts fenced code blocks (``` or ~~~) from Markdown or LLM output with their language tags and line counts, optionally filtered by language.
- [`rag-chunk` · Fragmentar texto para RAG](https://bursia-utils-production.up.railway.app/tools/rag-chunk): Divide un texto en fragmentos de hasta N caracteres o tokens estimados con solapamiento, respetando párrafos, oraciones y palabras. EN: Splits text into chunks of at most N characters or estimated tokens with overlap, preferring paragraph, then sentence, then word boundaries; returns offsets for citation.
- [`dedupe-similar` · Quitar textos casi duplicados](https://bursia-utils-production.up.railway.app/tools/dedupe-similar): Agrupa textos casi duplicados (similitud Jaccard de trigramas ≥ umbral) entre hasta 2.000 elementos y conserva el primero. EN: Groups near-duplicate strings (Jaccard similarity of character 3-grams ≥ threshold, accent- and case-insensitive) among up to 2,000 items, keeping the first of each group.
- [`vector-similarity` · Similitud entre vectores](https://bursia-utils-production.up.railway.app/tools/vector-similarity): Similitud coseno, producto punto y distancias euclidiana y Manhattan entre dos vectores. EN: Cosine similarity, dot product, Euclidean and Manhattan distance between two numeric vectors of equal length (≤ 8,192 dims), plus their L2 norms.
- [`vector-top-k` · Vectores más cercanos (top-k)](https://bursia-utils-production.up.railway.app/tools/vector-top-k): Ordena hasta 2.000 vectores por similitud coseno con un vector consulta y devuelve los k mejores. EN: Ranks up to 2,000 candidate vectors by cosine similarity (or negative Euclidean distance) to a query vector and returns the top k with indices and scores; total size capped at 2M numbers.
- [`bm25-rank` · Ranking por palabras clave (BM25)](https://bursia-utils-production.up.railway.app/tools/bm25-rank): Ordena hasta 2.000 documentos para una consulta con BM25 (sin embeddings), con palabras sin tildes. EN: Ranks up to 2,000 documents for a query with Okapi BM25 (k1, b tunable) using accent-insensitive Unicode word tokens, e.g. to pick passages for retrieval without embeddings.
- [`backoff-schedule` · Plan de reintentos con espera](https://bursia-utils-production.up.railway.app/tools/backoff-schedule): Calcula los tiempos de espera entre reintentos (exponencial, lineal o constante) con tope y jitter opcional. EN: Computes retry delays for exponential, linear or constant backoff with a cap and optional jitter (full, equal or decorrelated; seeded for reproducibility), and the cumulative wait.
- [`retry-after-parse` · Leer cabecera Retry-After](https://bursia-utils-production.up.railway.app/tools/retry-after-parse): Interpreta Retry-After (segundos o fecha HTTP) en segundos de espera y hora absoluta de reintento. EN: Parses an HTTP Retry-After value (delay seconds or HTTP-date) into seconds to wait and the absolute retry time, relative to a given now instant.
- [`rate-limit-plan` · Planear límite de solicitudes](https://bursia-utils-production.up.railway.app/tools/rate-limit-plan): Dado un límite de N solicitudes por ventana, calcula el espaciado mínimo, la duración total mínima y la espera del próximo llamado. EN: Given a limit of N requests per window and a number of calls to make, computes the minimum spacing between calls, the minimum total duration, and a token-bucket wait time for the next call.
- [`idempotency-key` · Clave de idempotencia](https://bursia-utils-production.up.railway.app/tools/idempotency-key): Deriva una clave de idempotencia determinista de una solicitud (método, URL, cuerpo JSON canónico), para reutilizarla en reintentos. EN: Derives a deterministic idempotency key from a request (method, URL, canonical JSON body, optional scope) as SHA-256 hex or a UUID-shaped string, so retries of the same request reuse the same key.
- [`token-units-convert` · Monto de token ↔ unidades base](https://bursia-utils-production.up.railway.app/tools/token-units-convert): Convierte montos de tokens entre decimal y unidades base enteras de forma exacta (USDC 6 decimales, ETH 18…), como en x402. EN: Converts a token amount between decimal and integer base units exactly (BigInt), e.g. USDC (6 decimals) 1.5 ↔ 1500000, ETH (18) or any decimals 0-36, as used in x402 payment requirements.
- [`llm-cost-estimate` · Estimar costo de tokens de LLM](https://bursia-utils-production.up.railway.app/tools/llm-cost-estimate): Estima el costo de llamadas a un LLM a partir de tokens (o texto estimado) y precios por millón indicados; sin lista de precios incorporada. EN: Estimates LLM request cost from input/output token counts (or text, estimated heuristically) and supplied per-million-token prices, with optional cached-input pricing and call volume. No built-in price list.
- [`text-redact-pii` · Ocultar datos personales y secretos](https://bursia-utils-production.up.railway.app/tools/text-redact-pii): Enmascara datos personales y secretos en un texto: correos, teléfonos, tarjetas (Luhn), IBAN, IP, JWT, claves API y claves privadas. Basado en patrones. EN: Masks common personal data and secrets in text: emails, phone numbers, Luhn-valid card numbers, IBANs, IPv4 addresses, JWTs, API keys (sk-, AKIA, ghp_, xox, AIza) and PEM private keys. Pattern-based; may miss or over-match.
- [`h2o-rank` · H2O: priorizar oportunidades](https://bursia-utils-production.up.railway.app/tools/h2o-rank): Ordena hasta 8 oportunidades candidatas (H2O · Hallazgo, Homologación y Oportunidad) con conteos de evidencia, factibilidad y esfuerzo dados: BUILD_CANDIDATE_MODELLED, INVESTIGATE, DISCARD, ABSTAIN o DENY, con valor de la información y posteriores. Puntos modelados, no dinero. EN: Ranks up to 8 candidate opportunities (H2O · Hallazgo, Homologación y Oportunidad) from caller-supplied evidence counts, feasibility and effort: BUILD_CANDIDATE_MODELLED, INVESTIGATE, DISCARD, ABSTAIN or DENY each, with value of information and posteriors. Modelled points, not money.

## Formatos web y archivos para agentes / Web formats and agent-readiness files (/mcp/web, 57)

- [`html-escape` · Escapar HTML](https://bursia-utils-production.up.railway.app/tools/html-escape): Escapa &, <, > (y comillas para atributos) para insertar texto en HTML de forma segura. EN: Escapes &, <, > (and " ' for attribute contexts) so text can be safely inserted into HTML.
- [`html-unescape` · Desescapar HTML](https://bursia-utils-production.up.railway.app/tools/html-unescape): Decodifica referencias de caracteres HTML numéricas y unas 100 entidades con nombre comunes. EN: Decodes HTML character references: numeric (&#233; &#xE9;) and about 100 common named entities (&amp; &nbsp; &ntilde; &euro; …). Unknown names are left as-is.
- [`html-to-text` · HTML a texto plano](https://bursia-utils-production.up.railway.app/tools/html-to-text): Convierte HTML en texto plano legible: quita scripts y estilos, convierte bloques en saltos de línea y decodifica entidades. EN: Converts HTML to readable plain text by string processing: drops script/style/comments, turns block elements into line breaks and list items into "- ", decodes entities, optionally keeps link URLs. Not a full HTML parser.
- [`markdown-to-text` · Markdown a texto plano](https://bursia-utils-production.up.railway.app/tools/markdown-to-text): Elimina la sintaxis Markdown (títulos, énfasis, enlaces, listas, tablas…) y devuelve texto plano. EN: Strips Markdown syntax (headings, emphasis, links, images, code fences, lists, blockquotes, tables, inline HTML) and returns plain text, keeping link and image text.
- [`markdown-render-html` · Markdown a HTML seguro](https://bursia-utils-production.up.railway.app/tools/markdown-render-html): Convierte un subconjunto de Markdown a HTML seguro: escapa HTML crudo y solo permite enlaces http(s), mailto, # y /. EN: Renders a CommonMark-like Markdown subset (headings, paragraphs, emphasis, code, fenced code, lists, blockquotes, tables, links, images) to HTML. Raw HTML is escaped and only http(s), mailto, # and / links are kept.
- [`markdown-table` · Construir tabla Markdown](https://bursia-utils-production.up.railway.app/tools/markdown-table): Construye una tabla Markdown (GFM) desde objetos o filas, con alineación por columna. EN: Builds a GitHub-flavored Markdown table from an array of objects (columns = union of keys) or an array of rows with headers, with per-column alignment and pipe escaping.
- [`markdown-toc` · Índice de un Markdown](https://bursia-utils-production.up.railway.app/tools/markdown-toc): Extrae los títulos de un Markdown y genera una tabla de contenido anidada con anclas estilo GitHub. EN: Extracts ATX headings (#…######, skipping code fences) and builds a nested Markdown table of contents with GitHub-style anchors, deduplicating repeated anchors.
- [`markdown-links-extract` · Extraer enlaces de Markdown](https://bursia-utils-production.up.railway.app/tools/markdown-links-extract): Lista enlaces, imágenes, definiciones de referencia y URLs sueltas de un Markdown. EN: Lists inline links, images, reference definitions and bare URLs in Markdown with their text and target, flagging relative and non-http(s) links.
- [`html-meta-extract` · Extraer metadatos HTML](https://bursia-utils-production.up.railway.app/tools/html-meta-extract): Extrae metadatos de un HTML proporcionado (sin descargarlo): título, idioma, descripción, canonical, Open Graph, JSON-LD y h1. EN: Extracts metadata from a supplied HTML string (no fetching): title, lang, meta description/robots, canonical, Open Graph and Twitter tags, JSON-LD block count and types, h1 texts and hreflang links.
- [`sitemap-build` · Construir sitemap XML](https://bursia-utils-production.up.railway.app/tools/sitemap-build): Genera un sitemap XML (sitemaps.org) de hasta 50.000 URLs con lastmod, changefreq y prioridad. EN: Builds a sitemaps.org XML sitemap from up to 50,000 URLs with optional lastmod, changefreq and priority, XML-escaping each value and rejecting non-http(s) URLs.
- [`robots-txt-check` · Revisar reglas de robots.txt](https://bursia-utils-production.up.railway.app/tools/robots-txt-check): Decide si un agente puede acceder a una ruta según un robots.txt dado (RFC 9309) e indica la regla decisiva. No descarga nada. EN: Decides whether a user agent may fetch a path under a supplied robots.txt (RFC 9309: most specific group, longest match, Allow wins ties, * and $ wildcards) and reports the deciding rule. Nothing is fetched.
- [`robots-ai-crawlers` · Acceso de rastreadores de IA](https://bursia-utils-production.up.railway.app/tools/robots-ai-crawlers): Dado un robots.txt, indica para 21 rastreadores de IA conocidos (GPTBot, ClaudeBot, Google-Extended…) si una ruta está permitida y si hay un grupo específico. EN: Given a robots.txt, reports for 21 known AI crawlers and agent fetchers (GPTBot, ClaudeBot, Claude-User, Google-Extended, PerplexityBot, CCBot…) whether a path is allowed and whether the decision comes from a bot-specific group.
- [`llms-txt-lint` · Revisar llms.txt](https://bursia-utils-production.up.railway.app/tools/llms-txt-lint): Revisa un llms.txt según el formato de llmstxt.org (H1, resumen, secciones H2 con listas de enlaces) e informa errores, advertencias y estructura. EN: Checks an llms.txt file against the llmstxt.org format: one H1 title first, optional > summary, H2 sections containing "- [name](url): notes" link lists, an optional "Optional" section; reports errors, warnings and the parsed structure.
- [`security-txt-validate` · Validar security.txt](https://bursia-utils-production.up.railway.app/tools/security-txt-validate): Valida un security.txt según RFC 9116: Contact y Expires obligatorios, campos conocidos, URIs https y firma PGP. EN: Validates a security.txt file per RFC 9116: required Contact and a single Expires (in the future relative to as_of and ideally < 1 year away), known fields, https URIs, and whether it is PGP-signed.
- [`mermaid-check` · Revisar sintaxis Mermaid](https://bursia-utils-production.up.railway.app/tools/mermaid-check): Revisa de forma básica un diagrama Mermaid sin renderizarlo: tipo de diagrama y dirección válidos, corchetes y comillas balanceados por línea, pares subgraph/end y loop/alt/opt/par…end, y aristas con destino. No es un analizador completo. EN: Sanity-checks Mermaid diagram text without rendering it: known diagram type and direction, balanced brackets and quotes per line, subgraph/end and block (loop/alt/opt/par) pairing, and flowchart edges with a target. Not a full parser.
- [`dot-check` · Revisar sintaxis Graphviz DOT](https://bursia-utils-production.up.railway.app/tools/dot-check): Revisa de forma básica un texto DOT de Graphviz sin renderizarlo: encabezado ([strict] graph|digraph [id] {), llaves/corchetes y comillas balanceados, -> solo en digraph y -- solo en graph, y atributos clave=valor. Cuenta nodos y aristas. EN: Sanity-checks Graphviz DOT text without rendering: header ([strict] graph|digraph [id] {), balanced braces/brackets and quotes, -> only in digraphs and -- only in graphs, and attribute lists of key=value. Counts nodes and edges. Not a full parser.
- [`html-tables-extract` · Extraer tablas de HTML](https://bursia-utils-production.up.railway.app/tools/html-tables-extract): Extrae tablas <table> de un HTML como filas de texto, detectando encabezados (thead o una primera fila de th), expandiendo colspan y, opcionalmente, como objetos por encabezado. Las tablas anidadas se extraen por separado. EN: Extracts <table> elements from HTML into rows of cell text, with header detection (thead or a first row of th), colspan expansion and optional row objects keyed by header. Nested tables are extracted separately.
- [`html-links-extract` · Extraer enlaces de HTML](https://bursia-utils-production.up.railway.app/tools/html-links-extract): Extrae enlaces <a href> de un HTML con su texto, rel y target, resuelve URL relativas con una base opcional y clasifica cada uno como interno, externo, mailto, tel, ancla u otro. Deduplicación opcional. EN: Extracts <a href> links from HTML with their text, rel and target, resolves relative URLs against an optional base, and classifies each as internal, external, mailto, tel, anchor or other. Optional de-duplication.
- [`html-to-markdown` · Convertir HTML a Markdown](https://bursia-utils-production.up.railway.app/tools/html-to-markdown): Convierte HTML en Markdown (GFM): títulos, párrafos, énfasis, enlaces, imágenes, listas anidadas, citas, código, tablas y reglas; decodifica entidades y quita scripts y estilos. EN: Converts HTML to GitHub-flavored Markdown by string processing: headings, paragraphs, emphasis, links, images, nested lists, blockquotes, code and fenced code with language, tables and rules, with entities decoded and script/style dropped. Not a full HTML parser.
- [`markdown-to-chat` · Markdown a WhatsApp, Slack o Telegram](https://bursia-utils-production.up.railway.app/tools/markdown-to-chat): Convierte Markdown al formato de una app de chat: WhatsApp, Slack mrkdwn o Telegram MarkdownV2 (con el escape obligatorio); los títulos pasan a negrita y las tablas a bloques de código. EN: Converts Markdown to the formatting of a chat app: WhatsApp (*bold* _italic_ ~strike~), Slack mrkdwn (<url|text>, &amp; escaping) or Telegram MarkdownV2 (with its required backslash escaping); headings become bold lines and tables code blocks.
- [`template-render` · Rellenar plantilla Mustache](https://bursia-utils-production.up.railway.app/tools/template-render): Rellena una plantilla Mustache (subconjunto sin lógica): variables escapadas para HTML, nombres con punto, secciones, bucles sobre listas, secciones invertidas y comentarios. Sin parciales, lambdas ni código. EN: Renders a logic-less Mustache template subset: {{variables}} (HTML-escaped; {{{raw}}} and {{&raw}} unescaped), dotted names, {{#sections}} and loops over lists, {{^inverted}} sections and comments. No partials, lambdas or code; output is bounded.
- [`url-risk-heuristics` · Señales de phishing en una URL](https://bursia-utils-production.up.railway.app/tools/url-risk-heuristics): Señala indicios de phishing en una URL sin conexión: punycode y homógrafos, host IP, «@» en la autoridad, acortadores, TLD con alto índice de phishing, muchos subdominios. Son heurísticas, no un veredicto. EN: Flags phishing signals in a URL offline: punycode and mixed-script homographs, IP or obfuscated-IP hosts, "@" in the authority, link shorteners, TLDs with high phishing scores (Interisle 2025), many subdomains and lure words. Heuristic signals, not a verdict.
- [`url-parse` · Analizar URL](https://bursia-utils-production.up.railway.app/tools/url-parse): Analiza una URL absoluta (WHATWG) en esquema, host, puerto, ruta, parámetros y fragmento. Nunca devuelve contraseñas. EN: Parses an absolute URL with the WHATWG URL parser into scheme, host, port (with default), path, query parameters (repeated keys as arrays), fragment and origin. Passwords are never echoed.
- [`url-build` · Construir URL](https://bursia-utils-production.up.railway.app/tools/url-build): Construye una URL desde una base, segmentos de ruta y parámetros de consulta. EN: Builds a URL from a base, optional path segments (each percent-encoded) and query parameters (arrays repeat the key), with an optional fragment.
- [`url-normalize` · Normalizar URL](https://bursia-utils-production.up.railway.app/tools/url-normalize): Normaliza una URL para comparar o deduplicar: minúsculas, sin puerto por defecto, sin parámetros de seguimiento, etc. EN: Normalizes a URL for comparison or deduplication: lowercase scheme/host, drop default port, resolve dot segments, optionally sort query, drop tracking parameters (utm_*, gclid, fbclid…), fragment and trailing slash.
- [`url-resolve` · Resolver URL relativa](https://bursia-utils-production.up.railway.app/tools/url-resolve): Resuelve una referencia relativa contra una URL base. EN: Resolves a relative reference (../x, /y, ?q, //host/z) against a base URL per the WHATWG URL standard.
- [`query-parse` · Leer query string](https://bursia-utils-production.up.railway.app/tools/query-parse): Convierte una cadena de consulta en un objeto; claves repetidas forman arreglos y, opcionalmente, notación con corchetes. EN: Parses a URL query string (leading ? optional, + as space) into an object; repeated keys become arrays, and with nested=true a[b]=1 and a[]=1 bracket syntax builds objects/arrays.
- [`query-build` · Construir query string](https://bursia-utils-production.up.railway.app/tools/query-build): Serializa un objeto como cadena de consulta; arreglos repiten la clave o usan corchetes. EN: Serializes an object to an application/x-www-form-urlencoded query string; arrays repeat the key (a=1&a=2) or use brackets (a[]=1), nested objects use brackets, nulls are skipped.
- [`jwt-decode` · Decodificar JWT (sin verificar)](https://bursia-utils-production.up.railway.app/tools/jwt-decode): Decodifica cabecera y payload de un JWT SIN verificar la firma (no confiar en los datos). Convierte exp/iat/nbf y, con as_of, indica si expiró. EN: Decodes a JWT header and payload WITHOUT verifying the signature, so the claims must not be trusted. Converts exp/iat/nbf to ISO dates and, given as_of, reports whether the token is expired or not yet valid.
- [`jwt-sign-hmac` · Firmar JWT (HMAC)](https://bursia-utils-production.up.railway.app/tools/jwt-sign-hmac): Crea un JWT firmado con HS256/384/512 usando un secreto propio; las claims se firman tal cual. EN: Creates a compact JWS/JWT signed with HS256, HS384 or HS512 using a provided secret, e.g. for test fixtures or service-to-service tokens. Claims are signed as given; no defaults are added.
- [`jwt-verify-hmac` · Verificar JWT (HMAC)](https://bursia-utils-production.up.railway.app/tools/jwt-verify-hmac): Comprueba sin conexión un JWT firmado con HMAC (HS256/384/512): compara la firma en tiempo constante, rechaza «none» y cambios de algoritmo, y evalúa exp y nbf en un instante dado (as_of). EN: Checks an HMAC-signed JWT (HS256, HS384, HS512) offline: compares the signature in constant time, refuses "none" and algorithm swaps, and evaluates exp and nbf at a given instant (as_of) with optional leeway.
- [`user-agent-parse` · Analizar User-Agent](https://bursia-utils-production.up.railway.app/tools/user-agent-parse): Analiza heurísticamente un User-Agent: navegador, motor, sistema operativo, tipo de dispositivo y bots conocidos. Puede ser falsificado. EN: Heuristically parses a User-Agent string into browser and version, engine, OS and version, device class (desktop/mobile/tablet/bot) and known crawlers/AI bots. User-Agents can be spoofed.
- [`mime-lookup` · Buscar tipo MIME](https://bursia-utils-production.up.railway.app/tools/mime-lookup): Busca el tipo MIME de un archivo o extensión, o las extensiones de un tipo MIME (tabla de ~130 tipos). EN: Looks up the MIME type for a file name or extension, or the common extensions for a MIME type, from a built-in table of about 130 types; also says whether the type is text-like.
- [`http-status` · Explicar código de estado HTTP](https://bursia-utils-production.up.railway.app/tools/http-status): Explica un código de estado HTTP: frase estándar (inglés y español), clase, significado y si conviene reintentar. EN: Explains an HTTP status code: standard reason phrase (English and Spanish), class, short meaning, and whether a client should typically retry it.
- [`http-headers-parse` · Leer cabeceras HTTP](https://bursia-utils-production.up.railway.app/tools/http-headers-parse): Convierte un bloque de encabezados HTTP crudos en un objeto con nombres en minúscula. EN: Parses a raw HTTP header block (optionally starting with a request or status line) into an object with lowercase names; repeated headers become arrays (Set-Cookie always an array).
- [`cookie-parse` · Leer cabecera Cookie](https://bursia-utils-production.up.railway.app/tools/cookie-parse): Analiza el encabezado Cookie (nombre=valor; …) en un objeto. EN: Parses a Cookie request header (name=value; …) into an object, percent-decoding values when valid; first occurrence wins.
- [`set-cookie-parse` · Leer cabecera Set-Cookie](https://bursia-utils-production.up.railway.app/tools/set-cookie-parse): Analiza un encabezado Set-Cookie en nombre, valor y atributos, y señala omisiones de seguridad. EN: Parses a Set-Cookie response header into name, value and attributes (Expires, Max-Age, Domain, Path, Secure, HttpOnly, SameSite, Partitioned) and flags common security omissions.
- [`cache-control-parse` · Leer Cache-Control](https://bursia-utils-production.up.railway.app/tools/cache-control-parse): Analiza Cache-Control en directivas y resume si es almacenable en cachés compartidas o privadas. EN: Parses a Cache-Control header into directives (max-age, s-maxage, no-store, private, immutable, stale-while-revalidate…) and summarizes cacheability by shared and private caches.
- [`content-type-parse` · Leer Content-Type](https://bursia-utils-production.up.railway.app/tools/content-type-parse): Analiza Content-Type en tipo, subtipo, sufijo (+json) y parámetros (charset, boundary…). EN: Parses a Content-Type / media type header into type, subtype, structured-syntax suffix (+json) and parameters (charset, boundary…), lowercasing names.
- [`accept-language-parse` · Leer Accept-Language](https://bursia-utils-production.up.railway.app/tools/accept-language-parse): Analiza Accept-Language por prioridad q y, con idiomas soportados, elige la mejor coincidencia. EN: Parses an Accept-Language header into languages sorted by q-value and, given supported locales, picks the best match (exact, then by primary language).
- [`link-header-parse` · Leer cabecera Link](https://bursia-utils-production.up.railway.app/tools/link-header-parse): Analiza el encabezado Link (RFC 8288) en URL y rel, p. ej. para paginación rel="next". EN: Parses an HTTP Link header into URL + rel + other parameters, e.g. to follow rel="next" pagination; relative URLs are resolved against an optional base.
- [`http-date` · Fecha HTTP](https://bursia-utils-production.up.railway.app/tools/http-date): Convierte entre fecha HTTP (IMF-fixdate) e ISO 8601 / Unix, para Last-Modified, Expires o Retry-After. EN: Converts between HTTP-date (IMF-fixdate, e.g. "Sat, 31 Oct 2026 12:00:00 GMT") and ISO 8601 / Unix seconds, e.g. for Last-Modified, Expires and Retry-After headers.
- [`basic-auth-header` · Cabecera de autenticación Basic](https://bursia-utils-production.up.railway.app/tools/basic-auth-header): Construye el encabezado Authorization Basic (RFC 7617). Es solo base64, no cifrado; úselo con HTTPS. EN: Builds an HTTP Basic Authorization header value from a username and password (RFC 7617, UTF-8). Note: Basic auth is only base64, not encryption; it needs HTTPS for confidentiality.
- [`csp-parse` · Leer Content-Security-Policy](https://bursia-utils-production.up.railway.app/tools/csp-parse): Analiza Content-Security-Policy en directivas y señala configuraciones riesgosas (unsafe-inline, comodines…). EN: Parses a Content-Security-Policy header into directives and source lists, and flags risky settings (unsafe-inline, unsafe-eval, wildcard sources, missing default-src/object-src/base-uri).
- [`semver-parse` · Analizar versión semántica](https://bursia-utils-production.up.railway.app/tools/semver-parse): Valida y analiza una versión SemVer 2.0.0 en mayor, menor, parche, prerelease y build. EN: Validates and parses a SemVer 2.0.0 string (optional leading v) into major, minor, patch, prerelease identifiers and build metadata.
- [`semver-compare` · Comparar versiones semánticas](https://bursia-utils-production.up.railway.app/tools/semver-compare): Compara dos versiones SemVer con las reglas de precedencia: devuelve -1, 0 o 1 y el nivel de diferencia. EN: Compares two SemVer versions with full precedence rules (prereleases sort before releases; build metadata ignored): returns -1, 0 or 1 and the difference level.
- [`semver-bump` · Subir versión semántica](https://bursia-utils-production.up.railway.app/tools/semver-bump): Incrementa una versión SemVer (major, minor, patch o prerelease con identificador opcional). EN: Increments a SemVer version: major, minor, patch, premajor, preminor, prepatch or prerelease (with an optional identifier like beta or rc), following npm semver semantics.
- [`semver-satisfies` · Versión dentro de un rango](https://bursia-utils-production.up.railway.app/tools/semver-satisfies): Verifica si una versión cumple un rango estilo npm (^, ~, x, guiones, ||). EN: Checks whether a version satisfies an npm-style range (^, ~, x-ranges, hyphen ranges, comparators, || alternatives). Prereleases only match when the range names the same version tuple, unless include_prerelease is true.
- [`semver-sort` · Ordenar versiones](https://bursia-utils-production.up.railway.app/tools/semver-sort): Ordena versiones SemVer por precedencia y opcionalmente devuelve la mayor que cumple un rango. EN: Sorts a list of SemVer versions by precedence (ascending or descending), reports invalid entries, and optionally returns the highest version satisfying a range.
- [`ip-parse` · Analizar dirección IP](https://bursia-utils-production.up.railway.app/tools/ip-parse): Valida una IP v4/v6 y devuelve forma canónica y expandida, entero, nombre DNS inverso y tipo (privada, loopback, global…). EN: Validates an IPv4 or IPv6 address and returns canonical (RFC 5952 compressed) and expanded forms, integer and hex values, reverse-DNS name, and its type (private, loopback, link-local, documentation, multicast, CGNAT, global…).
- [`cidr-info` · Datos de subred CIDR](https://bursia-utils-production.up.railway.app/tools/cidr-info): Describe un bloque CIDR IPv4/IPv6: red, broadcast, primer y último host, máscara, comodín y número de direcciones. EN: Describes an IPv4 or IPv6 CIDR block: network and broadcast/last address, first and last usable host, netmask, wildcard mask, total and usable address counts.
- [`cidr-contains` · ¿IP dentro de rangos CIDR?](https://bursia-utils-production.up.railway.app/tools/cidr-contains): Verifica si una IP está dentro de alguno de varios bloques CIDR (p. ej. una lista permitida). EN: Checks whether an IP address falls inside any of a list of CIDR blocks (IPv4/IPv6, e.g. an allowlist) and lists which ones match.
- [`cidr-split` · Dividir CIDR en subredes](https://bursia-utils-production.up.railway.app/tools/cidr-split): Divide un bloque CIDR en subredes iguales de un prefijo mayor (máx. 1.024). EN: Splits a CIDR block into equal subnets of a longer prefix length (at most 1,024 subnets returned).
- [`ip-range-to-cidrs` · Rango de IP a bloques CIDR](https://bursia-utils-production.up.railway.app/tools/ip-range-to-cidrs): Convierte un rango de IPs inicio-fin en la lista mínima de bloques CIDR que lo cubre. EN: Converts an inclusive start-end IP range (IPv4 or IPv6) into the minimal list of CIDR blocks that covers exactly that range (at most 1,000 blocks).
- [`email-syntax-validate` · Validar sintaxis de correo](https://bursia-utils-production.up.railway.app/tools/email-syntax-validate): Verifica solo la SINTAXIS de un correo (subconjunto práctico de RFC 5321/5322); no comprueba que el buzón exista. EN: Checks email address SYNTAX only (practical RFC 5321/5322 subset: local part ≤ 64, domain ≤ 253, labels, TLD); it cannot tell whether the mailbox exists. Returns normalized form and reasons.
- [`phone-e164-validate` · Validar teléfono E.164](https://bursia-utils-production.up.railway.app/tools/phone-e164-validate): Normaliza un teléfono a E.164 e identifica el código de país. Solo sintaxis: no verifica que el número exista. EN: Normalizes a phone number to E.164 (+ and 8-15 digits) and identifies the country calling code from a built-in table. Syntax only: it does not check that the number is assigned or reachable.
- [`domain-syntax-validate` · Validar sintaxis de dominio](https://bursia-utils-production.up.railway.app/tools/domain-syntax-validate): Verifica la sintaxis de un nombre de dominio (etiquetas, longitudes, TLD), sin consultar DNS. EN: Checks hostname syntax (RFC 1035/1123 labels, total ≤ 253, label ≤ 63, alphabetic or xn-- TLD), detects IDN/punycode labels and IP literals. Does not query DNS and does not use the Public Suffix List.

## Datos estructurados e identificadores / Structured data and identifiers (/mcp/datos, 57)

- [`json-parse-check` · Validar sintaxis JSON](https://bursia-utils-production.up.railway.app/tools/json-parse-check): Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. EN: Checks whether text is valid JSON (RFC 8259); on error returns the parser message with line and column. Also reports the top-level type and nesting depth.
- [`json-pretty` · Formatear JSON](https://bursia-utils-production.up.railway.app/tools/json-pretty): Formatea JSON con sangría de 2/4 espacios o tabulador, con opción de ordenar claves. EN: Parses JSON text and re-serializes it with 2/4-space or tab indentation, optionally sorting object keys.
- [`json-minify` · Minificar JSON](https://bursia-utils-production.up.railway.app/tools/json-minify): Minifica JSON eliminando espacios; informa tamaños antes y después. EN: Parses JSON text and serializes it without whitespace; reports byte sizes before and after.
- [`json-sort-keys` · Ordenar claves de JSON](https://bursia-utils-production.up.railway.app/tools/json-sort-keys): Ordena recursivamente las claves de los objetos JSON sin cambiar el orden de los arreglos. EN: Recursively sorts object keys (by UTF-16 code units, or locale-aware), leaving array order unchanged.
- [`json-canonicalize` · JSON canónico (RFC 8785)](https://bursia-utils-production.up.railway.app/tools/json-canonicalize): Serializa JSON en forma canónica RFC 8785 (JCS) y devuelve su SHA-256. EN: Serializes a JSON value in RFC 8785 (JCS) canonical form: sorted keys, no whitespace, ECMAScript number formatting; also returns its SHA-256 for signing or deduplication.
- [`json-pointer-get` · Leer con JSON Pointer (RFC 6901)](https://bursia-utils-production.up.railway.app/tools/json-pointer-get): Lee el valor en una ruta como /clientes/0/nit dentro de un documento JSON con la sintaxis RFC 6901 (~1 es /, ~0 es ~) e indica si la ruta existe en lugar de fallar. EN: Reads the value at a path such as /clientes/0/nit inside a JSON document using RFC 6901 syntax (~1 stands for /, ~0 for ~) and reports whether the path exists rather than failing.
- [`json-path` · Consulta JSONPath](https://bursia-utils-production.up.railway.app/tools/json-path): Evalúa una consulta JSONPath (subconjunto de RFC 9535, con filtros) y devuelve valores y rutas. EN: Evaluates a JSONPath query (RFC 9535 subset: .name, ['name'], [n], [*], .., [a:b:c], unions, filters with ==, !=, <, <=, >, >=, &&, ||, !) and returns matching values and their normalized paths.
- [`json-patch-apply` · Aplicar JSON Patch (RFC 6902)](https://bursia-utils-production.up.railway.app/tools/json-patch-apply): Aplica un JSON Patch (RFC 6902) de forma atómica; si una operación falla, no se aplica nada. EN: Applies an RFC 6902 JSON Patch (add, remove, replace, move, copy, test) atomically to a document; any failing operation aborts the whole patch.
- [`json-diff-patch` · Diferencia JSON como parche](https://bursia-utils-production.up.railway.app/tools/json-diff-patch): Calcula un JSON Patch (RFC 6902) que transforma el documento a en b. EN: Computes an RFC 6902 JSON Patch that transforms document a into document b (object keys diffed recursively, arrays element-wise with tail adds/removes).
- [`json-merge-patch-apply` · Aplicar JSON Merge Patch](https://bursia-utils-production.up.railway.app/tools/json-merge-patch-apply): Aplica un JSON Merge Patch (RFC 7386): objetos se fusionan, null elimina, lo demás reemplaza. EN: Applies an RFC 7386 JSON Merge Patch: objects merge recursively, null deletes a key, any other value replaces.
- [`json-merge-patch-create` · Crear JSON Merge Patch](https://bursia-utils-production.up.railway.app/tools/json-merge-patch-create): Genera el JSON Merge Patch (RFC 7386) que convierte a en b. EN: Generates the RFC 7386 merge patch that turns document a into b. Note: merge patches cannot set a value to null or patch inside arrays.
- [`json-flatten-paths` · Aplanar JSON](https://bursia-utils-production.up.railway.app/tools/json-flatten-paths): Aplana objetos y arreglos anidados en un nivel con claves con puntos (a.b.0.c). EN: Flattens nested objects/arrays into one level with dotted keys (a.b.0.c) or bracket array indices (a.b[0].c). Empty objects/arrays are kept as leaves.
- [`json-unflatten` · Reconstruir JSON aplanado](https://bursia-utils-production.up.railway.app/tools/json-unflatten): Reconstruye JSON anidado a partir de claves con puntos; los índices numéricos crean arreglos. EN: Rebuilds nested JSON from flat dotted keys; numeric segments and [n] become array indices (max 10,000) unless arrays is false. Conflicting keys and __proto__/constructor/prototype segments are rejected.
- [`json-pick` · Elegir claves o rutas de JSON](https://bursia-utils-production.up.railway.app/tools/json-pick): Devuelve un objeto con solo las rutas indicadas (p. ej. user.name). EN: Returns a new object containing only the given dotted paths (e.g. user.name, items.0.id) from the input object.
- [`json-omit` · Omitir claves de JSON](https://bursia-utils-production.up.railway.app/tools/json-omit): Elimina las claves indicadas de un objeto; con deep=true en todos los niveles. EN: Removes the given keys from an object; with deep=true removes them at every nesting level (e.g. strip password or token fields).
- [`json-describe` · Describir estructura JSON](https://bursia-utils-production.up.railway.app/tools/json-describe): Resume la estructura de un JSON: profundidad, conteos por tipo, tamaño y rutas distintas. EN: Summarizes a JSON value: nesting depth, counts of each type, number of keys, serialized size, and the set of distinct paths (arrays collapsed to []).
- [`json-schema-validate` · Validar contra JSON Schema](https://bursia-utils-production.up.railway.app/tools/json-schema-validate): Valida un JSON contra un JSON Schema (subconjunto propio, sin $ref); informa palabras clave no soportadas. EN: Validates a JSON value against a JSON Schema using a built-in subset (type, enum, const, properties, required, items, min/max*, pattern, format, allOf/anyOf/oneOf/not). No $ref; patterns are time-limited; unsupported keywords are reported.
- [`json-schema-from-samples` · Inferir JSON Schema de ejemplos](https://bursia-utils-production.up.railway.app/tools/json-schema-from-samples): Convierte documentos de ejemplo (p. ej. respuestas de una API) en un JSON Schema inicial: une los tipos vistos en cada ruta, marca como requeridas las claves presentes en todos y describe los ítems. EN: Turns sample documents (for example API replies) into a starter JSON Schema: merges the types seen at each path, marks keys present in every sample as required and describes array items.
- [`csv-parse` · CSV a JSON](https://bursia-utils-production.up.railway.app/tools/csv-parse): Convierte CSV (RFC 4180) en un arreglo de objetos usando la fila de encabezado; infiere números y booleanos opcionalmente. EN: Parses RFC 4180 CSV (quoted fields, escaped quotes, CRLF, BOM) with a chosen delimiter into an array of objects using the header row, or arrays of strings; optional number/boolean inference.
- [`csv-build` · JSON a CSV](https://bursia-utils-production.up.railway.app/tools/csv-build): Convierte un arreglo de objetos en CSV (RFC 4180); columnas = unión de claves; puede neutralizar fórmulas de hoja de cálculo. EN: Converts an array of objects (or arrays) to RFC 4180 CSV; columns are the union of keys in first-seen order, nested values are JSON-encoded, and spreadsheet formula prefixes can be neutralized.
- [`yaml-parse` · YAML a JSON](https://bursia-utils-production.up.railway.app/tools/yaml-parse): Convierte un subconjunto seguro de YAML a JSON; rechaza anclas, alias, etiquetas y varios documentos. EN: Parses a safe YAML subset (block maps and sequences, plain/quoted scalars, flow [..] {..}, | and > blocks, comments) to JSON. Anchors, aliases, tags, merge keys and multi-documents are rejected.
- [`yaml-build` · JSON a YAML](https://bursia-utils-production.up.railway.app/tools/yaml-build): Serializa un valor JSON como YAML en bloque, con comillas cuando hace falta. EN: Serializes a JSON value as block-style YAML, quoting strings that would otherwise be read as numbers, booleans, null or YAML syntax.
- [`xml-parse` · XML a JSON](https://bursia-utils-production.up.railway.app/tools/xml-parse): Convierte XML a JSON (atributos @nombre, texto #text, hijos repetidos como arreglos). Rechaza DTD y entidades. EN: Parses XML into JSON: attributes as @name, text as #text (or a plain string for text-only elements), repeated children as arrays. DTDs and custom entities are rejected (no XXE or entity expansion).
- [`ndjson-to-json` · NDJSON a arreglo JSON](https://bursia-utils-production.up.railway.app/tools/ndjson-to-json): Convierte JSON delimitado por líneas (NDJSON) en un arreglo. EN: Parses newline-delimited JSON (JSON Lines) into an array, skipping blank lines; errors report the failing line number.
- [`json-to-ndjson` · Arreglo JSON a NDJSON](https://bursia-utils-production.up.railway.app/tools/json-to-ndjson): Serializa un arreglo JSON como NDJSON (un valor por línea). EN: Serializes an array of JSON values as newline-delimited JSON (one compact value per line).
- [`dotenv-parse` · Leer archivo .env](https://bursia-utils-production.up.railway.app/tools/dotenv-parse): Analiza texto .env (CLAVE=valor, comillas, comentarios) en un objeto, sin expandir variables. EN: Parses dotenv text (KEY=value, export prefix, single/double quotes, \n escapes in double quotes, # comments) into an object. No variable expansion or execution.
- [`array-dedupe` · Quitar duplicados de un arreglo](https://bursia-utils-production.up.railway.app/tools/array-dedupe): Elimina elementos duplicados (igualdad profunda) o por clave, conservando el primero. EN: Removes duplicate items (deep equality via canonical JSON) or items with a duplicate key, keeping the first occurrence and original order.
- [`array-sort` · Ordenar arreglo](https://bursia-utils-production.up.railway.app/tools/array-sort): Ordena un arreglo de valores u objetos por una o más claves (orden estable, natural). EN: Stable sort of an array of values or objects by one or more keys, ascending/descending, numbers before strings, with locale-aware natural string comparison.
- [`array-group-by` · Agrupar arreglo por clave](https://bursia-utils-production.up.railway.app/tools/array-group-by): Agrupa objetos por el valor de una clave y devuelve grupos y conteos. EN: Groups objects by the value of a key (dotted path), returning an object of arrays and group counts; missing keys go under "null".
- [`array-count-by` · Contar por valor o clave](https://bursia-utils-production.up.railway.app/tools/array-count-by): Cuenta las apariciones de cada valor distinto (o de una clave), ordenadas de mayor a menor. EN: Counts occurrences of each distinct value (or of a key's value), sorted by count descending.
- [`array-chunk` · Dividir arreglo en bloques](https://bursia-utils-production.up.railway.app/tools/array-chunk): Divide un arreglo en bloques de tamaño fijo, p. ej. para enviar en lotes. EN: Splits an array into consecutive chunks of a given size (last chunk may be shorter), e.g. for batching API calls.
- [`array-flatten` · Aplanar arreglos anidados](https://bursia-utils-production.up.railway.app/tools/array-flatten): Aplana arreglos anidados hasta una profundidad dada. EN: Flattens nested arrays to a given depth (default fully).
- [`array-set-ops` · Operaciones de conjuntos con arreglos](https://bursia-utils-production.up.railway.app/tools/array-set-ops): Calcula unión, intersección, diferencia o diferencia simétrica de dos arreglos. EN: Computes union, intersection, difference (a−b) or symmetric difference of two arrays using deep equality, preserving first-seen order.
- [`array-pluck` · Extraer una clave de cada objeto](https://bursia-utils-production.up.railway.app/tools/array-pluck): Extrae el valor de una clave de cada objeto de un arreglo. EN: Extracts the value at a key (dotted path) from every object in an array; missing values become null or are dropped.
- [`array-shuffle` · Barajar o muestrear arreglo](https://bursia-utils-production.up.railway.app/tools/array-shuffle): Mezcla un arreglo (Fisher-Yates) o toma una muestra de k elementos sin reemplazo. EN: Shuffles an array (Fisher-Yates) or draws a sample of k items without replacement. Uses secure randomness, or a seed for reproducible results.
- [`uuid-v4` · Generar UUID v4](https://bursia-utils-production.up.railway.app/tools/uuid-v4): Genera UUID versión 4 (RFC 9562) aleatorios. Con semilla, la salida es reproducible. EN: Generates random RFC 9562 version-4 UUIDs (122 random bits). Pass a seed for reproducible output in tests.
- [`uuid-v7` · Generar UUID v7 (ordenado por tiempo)](https://bursia-utils-production.up.railway.app/tools/uuid-v7): Genera UUID versión 7 (RFC 9562), ordenables por tiempo: marca de 48 bits en ms más bits aleatorios. EN: Generates RFC 9562 version-7 UUIDs: 48-bit Unix millisecond timestamp plus random bits, so they sort by creation time. Output is reproducible only when both seed and timestamp_ms are given; otherwise the clock and/or secure randomness are used.
- [`uuid-v5` · UUID v5 (por nombre, SHA-1)](https://bursia-utils-production.up.railway.app/tools/uuid-v5): UUID versión 5 determinista a partir de un espacio de nombres y un nombre (SHA-1). EN: Deterministic RFC 9562 version-5 UUID from a namespace (dns, url, oid, x500 or any UUID) and a name, using SHA-1.
- [`uuid-v3` · UUID v3 (por nombre, MD5)](https://bursia-utils-production.up.railway.app/tools/uuid-v3): UUID versión 3 determinista (MD5). Para sistemas nuevos se prefiere v5. EN: Deterministic RFC 9562 version-3 UUID from a namespace and a name, using MD5. RFC 9562 recommends v5 over v3.
- [`uuid-inspect` · Inspeccionar o validar UUID](https://bursia-utils-production.up.railway.app/tools/uuid-inspect): Valida un UUID e informa versión, variante y la marca de tiempo en v1, v6 y v7. EN: Validates a UUID string and reports version, variant, and the embedded timestamp for v1, v6 and v7. Accepts braces, urn:uuid: prefix and missing hyphens.
- [`ulid-generate` · Generar ULID](https://bursia-utils-production.up.railway.app/tools/ulid-generate): Genera ULID: 26 caracteres Crockford Base32, marca de tiempo de 48 bits y 80 bits aleatorios; ordenables. EN: Generates ULIDs: 26-char Crockford Base32, 48-bit millisecond timestamp plus 80 random bits, sortable. Reproducible only when both seed and timestamp_ms are given; otherwise the clock and/or secure randomness are used.
- [`ulid-decode` · Decodificar ULID](https://bursia-utils-production.up.railway.app/tools/ulid-decode): Valida un ULID y extrae su marca de tiempo y la parte aleatoria. EN: Validates a ULID and extracts its timestamp (ms and ISO 8601) and the hex of its 80-bit random part.
- [`nanoid` · Generar ID estilo Nano ID](https://bursia-utils-production.up.railway.app/tools/nanoid): Genera IDs aleatorios compactos y seguros para URL (21 caracteres por defecto) o con alfabeto propio. EN: Generates compact URL-safe random IDs (default 21 chars from A-Za-z0-9_-) or with a custom alphabet of 2-256 unique characters, without modulo bias.
- [`snowflake-decode` · Decodificar ID Snowflake](https://bursia-utils-production.up.railway.app/tools/snowflake-decode): Decodifica un ID Snowflake de 64 bits (Twitter/X, Discord o época propia) en fecha, trabajador y secuencia. EN: Decodes a 64-bit Snowflake ID into timestamp, worker/process and sequence using the Twitter/X or Discord layout and epoch, or a custom epoch.
- [`snowflake-encode` · Construir ID Snowflake](https://bursia-utils-production.up.railway.app/tools/snowflake-encode): Construye un ID Snowflake (estilo Twitter 41/10/12 bits) desde marca de tiempo, máquina y secuencia. EN: Builds a 64-bit Snowflake ID (Twitter-style 41/10/12 bit layout) from a timestamp, machine ID and sequence, for a given epoch.
- [`objectid-decode` · Decodificar ObjectId de MongoDB](https://bursia-utils-production.up.railway.app/tools/objectid-decode): Valida un ObjectId de MongoDB y extrae su fecha de creación. EN: Validates a 24-hex MongoDB ObjectId and extracts its embedded creation time (seconds precision) and the random/counter parts.
- [`ksuid-decode` · Decodificar KSUID](https://bursia-utils-production.up.railway.app/tools/ksuid-decode): Decodifica un KSUID de 27 caracteres en fecha y payload de 128 bits. EN: Decodes a 27-char base62 KSUID into its timestamp (epoch 1400000000) and 128-bit payload.
- [`random-token` · Generar token aleatorio](https://bursia-utils-production.up.railway.app/tools/random-token): Genera un token aleatorio de 1 a 256 bytes en hex, base64url o base58. EN: Generates a random token of 1-256 bytes encoded as hex, base64url or base58, e.g. for API keys or nonces. Pass a seed only for test fixtures.
- [`toon-encode` · Convertir JSON a TOON](https://bursia-utils-production.up.railway.app/tools/toon-encode): Codifica un valor JSON como TOON (Token-Oriented Object Notation, especificación 4.4): sangría en vez de llaves, longitudes declaradas y filas tabulares; suele gastar menos tokens que JSON. EN: Encodes a JSON value as TOON (Token-Oriented Object Notation, spec 4.4): indentation instead of braces, declared array lengths, tabular rows for uniform objects and minimal quoting, which usually needs fewer LLM tokens than JSON.
- [`toon-decode` · Convertir TOON a JSON](https://bursia-utils-production.up.railway.app/tools/toon-decode): Decodifica un texto TOON (especificación 4.4) a JSON; el modo estricto comprueba longitudes declaradas, anchos de fila, sangría y claves duplicadas. EN: Decodes TOON text (Token-Oriented Object Notation, spec 4.4) into JSON: objects by indentation, inline, list and tabular arrays, keyed tables, quoted strings and comments; strict mode checks declared lengths, widths, indentation and duplicate keys.
- [`iso-country-lookup` · Buscar país ISO 3166-1](https://bursia-utils-production.up.railway.app/tools/iso-country-lookup): Busca países ISO 3166-1 alfa-2 por código o por nombre en español o inglés (sin importar tildes, coincidencia parcial) y devuelve código, ambos nombres y la bandera. Nombres del CLDR de Unicode incluido en Node.js; 249 códigos. EN: Looks up ISO 3166-1 alpha-2 countries by code or by name in Spanish or English (accent-insensitive, partial match) and returns the code, both names and the flag emoji. Names come from the Unicode CLDR data bundled with Node.js; 249 codes.
- [`iso-language-lookup` · Buscar idioma ISO 639-1](https://bursia-utils-production.up.railway.app/tools/iso-language-lookup): Busca códigos de idioma ISO 639-1 de dos letras por código o por nombre en español o inglés (sin importar tildes, coincidencia parcial). Nombres del CLDR de Unicode incluido en Node.js. EN: Looks up ISO 639-1 two-letter language codes by code or by name in Spanish or English (accent-insensitive, partial match). Names come from the Unicode CLDR data bundled with Node.js.
- [`sql-readonly-check` · Revisar SQL de solo lectura](https://bursia-utils-production.up.railway.app/tools/sql-readonly-check): Revisa estáticamente si un SQL solo lee: separa sentencias, ignora comentarios y textos entre comillas y marca palabras de escritura o DDL (también en CTE y SELECT … INTO), bloqueos, EXPLAIN ANALYZE y funciones riesgosas. Es heurístico; para imponerlo use roles de solo lectura. EN: Statically checks whether SQL text only reads: splits statements, skips comments and quoted text, and flags write or DDL keywords (also inside CTEs and SELECT … INTO), locking clauses, EXPLAIN ANALYZE and risky functions. A heuristic; use read-only database roles for enforcement.
- [`lookup-table` · Buscar un valor en una tabla](https://bursia-utils-production.up.railway.app/tools/lookup-table): Busca una clave en una tabla (objeto o lista de pares clave/valor) y devuelve su valor o un valor por defecto, con coincidencia opcional sin mayúsculas ni tildes. EN: Maps a key to a value through a lookup table (object or list of key/value pairs) with an optional default, case- and accent-insensitive matching and trimming; reports whether the key was found and which table key matched.
- [`array-filter-aggregate` · Filtrar, agrupar y totalizar un arreglo](https://bursia-utils-production.up.railway.app/tools/array-filter-aggregate): Aplica condiciones where a un arreglo de objetos (campos con punto), agrupa por campos y calcula count, count_distinct, sum, avg, min y max. Sin expresiones ni eval. EN: Filters an array of objects with where-clauses (eq, ne, gt, gte, lt, lte, in, nin, contains, starts_with, ends_with, exists, is_null on dotted fields; all or any), then groups by fields and computes count, count_distinct, sum, avg, min and max. No expressions or eval.
- [`random-pick` · Número al azar o sorteo de una lista](https://bursia-utils-production.up.railway.app/tools/random-pick): Genera enteros aleatorios en un rango inclusivo o elige n elementos de una lista, con o sin repetición; con semilla el resultado es reproducible. EN: Draws random integers in an inclusive range, or picks n items from a list, with or without repetition, using secure randomness; with a seed the result is reproducible (HMAC-SHA256 stream).
- [`password-generate` · Generar contraseñas seguras](https://bursia-utils-production.up.railway.app/tools/password-generate): Genera contraseñas aleatorias con los conjuntos de caracteres elegidos, exclusiones y sin caracteres ambiguos, e informa el tamaño del alfabeto y la entropía en bits. EN: Generates random passwords with crypto randomness from chosen character sets (lower, upper, digits, symbols) with exclusions and ambiguous-character removal, at least one character from each set, and reports the pool size and entropy in bits. No seed.

## Codificaciones / Encodings (/mcp/codificacion, 40)

- [`base64-encode` · Codificar Base64](https://bursia-utils-production.up.railway.app/tools/base64-encode): Codifica texto (UTF-8) o bytes en Base64 estándar (RFC 4648) con relleno. EN: Encodes text (UTF-8) or hex/base64 bytes as standard Base64 (RFC 4648 §4) with padding.
- [`base64-decode` · Decodificar Base64](https://bursia-utils-production.up.railway.app/tools/base64-decode): Decodifica Base64 (estándar o URL-safe) a texto UTF-8 o hex. Rechaza caracteres inválidos. EN: Decodes standard or URL-safe Base64 (padding optional, whitespace ignored) to UTF-8 text, hex or base64. Rejects characters outside the alphabet.
- [`base64url-encode` · Codificar Base64url](https://bursia-utils-production.up.railway.app/tools/base64url-encode): Codifica en Base64 URL-safe (RFC 4648 §5, sin relleno), como en JWT. EN: Encodes text or hex bytes as URL-safe Base64 (RFC 4648 §5: - and _ alphabet, no padding), as used in JWTs.
- [`base64url-decode` · Decodificar Base64url](https://bursia-utils-production.up.railway.app/tools/base64url-decode): Decodifica Base64 URL-safe a texto UTF-8 o hex. EN: Decodes URL-safe Base64 (RFC 4648 §5, padding optional) to UTF-8 text, hex or base64.
- [`hex-encode` · Codificar hexadecimal](https://bursia-utils-production.up.railway.app/tools/hex-encode): Codifica texto UTF-8 en hexadecimal, con separador opcional. EN: Encodes UTF-8 text (or base64 bytes) as lowercase or uppercase hexadecimal, with an optional separator between bytes.
- [`hex-decode` · Decodificar hexadecimal](https://bursia-utils-production.up.railway.app/tools/hex-decode): Decodifica hexadecimal a texto UTF-8 o base64. EN: Decodes hexadecimal (case-insensitive; spaces, colons and 0x prefix ignored) to UTF-8 text or base64.
- [`base32-encode` · Codificar Base32](https://bursia-utils-production.up.railway.app/tools/base32-encode): Codifica en Base32 RFC 4648 (A-Z, 2-7), p. ej. para secretos TOTP. EN: Encodes text or hex bytes as RFC 4648 Base32 (A-Z, 2-7) with optional padding, e.g. for TOTP secrets.
- [`base32-decode` · Decodificar Base32](https://bursia-utils-production.up.railway.app/tools/base32-decode): Decodifica Base32 RFC 4648 a texto o hex. EN: Decodes RFC 4648 Base32 (case-insensitive, padding and spaces optional) to UTF-8 text, hex or base64.
- [`crockford32-encode` · Codificar Base32 Crockford](https://bursia-utils-production.up.railway.app/tools/crockford32-encode): Codifica en Base32 de Crockford (sin I, L, O, U), el alfabeto de los ULID. EN: Encodes bytes in Douglas Crockford's Base32 (no I, L, O, U; no padding), the alphabet used by ULIDs.
- [`crockford32-decode` · Decodificar Base32 Crockford](https://bursia-utils-production.up.railway.app/tools/crockford32-decode): Decodifica Base32 de Crockford; mapea O→0 e I/L→1, ignora guiones. EN: Decodes Crockford Base32; case-insensitive, maps O→0 and I/L→1, ignores hyphens.
- [`base58-encode` · Codificar Base58](https://bursia-utils-production.up.railway.app/tools/base58-encode): Codifica en Base58 (alfabeto Bitcoin). Entrada de hasta 2 KB. EN: Encodes bytes in Base58 with the Bitcoin alphabet; leading zero bytes become leading 1s. Input up to 2 KB.
- [`base58-decode` · Decodificar Base58](https://bursia-utils-production.up.railway.app/tools/base58-decode): Decodifica Base58 (alfabeto Bitcoin) a hex o texto. EN: Decodes Bitcoin-alphabet Base58 to hex, UTF-8 text or base64.
- [`base58check-encode` · Codificar Base58Check](https://bursia-utils-production.up.railway.app/tools/base58check-encode): Codificación Base58Check: añade 4 bytes de doble SHA-256 al payload hex y codifica en Base58. EN: Base58Check encoding: appends the first 4 bytes of double SHA-256 to a hex payload (including any version byte) and encodes it in Base58.
- [`base58check-decode` · Decodificar Base58Check](https://bursia-utils-production.up.railway.app/tools/base58check-decode): Decodifica Base58Check, verifica el checksum y devuelve el payload y el byte de versión. EN: Decodes Base58Check, verifies the 4-byte double-SHA-256 checksum and returns the payload and its first (version) byte.
- [`ascii85-encode` · Codificar Ascii85](https://bursia-utils-production.up.railway.app/tools/ascii85-encode): Codifica bytes en Ascii85 (variante Adobe), con delimitadores <~ ~> opcionales. EN: Encodes bytes as Ascii85 (Adobe/btoa variant, z for zero groups), optionally wrapped in <~ ~> delimiters.
- [`ascii85-decode` · Decodificar Ascii85](https://bursia-utils-production.up.railway.app/tools/ascii85-decode): Decodifica Ascii85 (con o sin <~ ~>). EN: Decodes Ascii85 (with or without <~ ~>), supporting the z shorthand.
- [`url-encode` · Codificar URL (porcentaje)](https://bursia-utils-production.up.railway.app/tools/url-encode): Codifica texto para URL: modo componente, formulario (espacio como +) o ruta (conserva /). EN: Percent-encodes text for a URL: component mode (like encodeURIComponent), form mode (space as +, application/x-www-form-urlencoded) or path mode (keeps /).
- [`url-decode` · Decodificar URL (porcentaje)](https://bursia-utils-production.up.railway.app/tools/url-decode): Decodifica texto con codificación porcentual; en modo formulario + es espacio. EN: Decodes percent-encoded text; in form mode + is treated as a space. Fails on malformed sequences instead of guessing.
- [`punycode-encode` · Dominio a ASCII (Punycode)](https://bursia-utils-production.up.railway.app/tools/punycode-encode): Convierte un dominio internacionalizado a ASCII (Punycode, prefijo xn--). EN: Converts an internationalized domain name to ASCII: lowercases and NFC-normalizes each label, then applies Punycode (RFC 3492) with the xn-- prefix. Does not apply full UTS #46 mapping.
- [`punycode-decode` · Dominio a Unicode (Punycode)](https://bursia-utils-production.up.railway.app/tools/punycode-decode): Convierte etiquetas Punycode xn-- de un dominio a Unicode. EN: Converts xn-- Punycode labels of a domain back to Unicode (RFC 3492). ASCII labels are returned unchanged.
- [`quoted-printable-encode` · Codificar quoted-printable](https://bursia-utils-production.up.railway.app/tools/quoted-printable-encode): Codifica texto como quoted-printable MIME (RFC 2045). EN: Encodes UTF-8 text as MIME quoted-printable (RFC 2045): =XX escapes, 76-char soft line breaks, CRLF line endings.
- [`quoted-printable-decode` · Decodificar quoted-printable](https://bursia-utils-production.up.railway.app/tools/quoted-printable-decode): Decodifica quoted-printable MIME a texto UTF-8. EN: Decodes MIME quoted-printable (RFC 2045), removing soft line breaks, to UTF-8 text or hex.
- [`binary-encode` · Texto a binario](https://bursia-utils-production.up.railway.app/tools/binary-encode): Convierte texto UTF-8 a bytes binarios de 8 bits separados por espacios. EN: Converts UTF-8 text to space-separated 8-bit binary bytes.
- [`binary-decode` · Binario a texto](https://bursia-utils-production.up.railway.app/tools/binary-decode): Convierte bits 0/1 a texto UTF-8. EN: Converts a string of 0/1 bits (spaces optional, length a multiple of 8) to UTF-8 text or hex.
- [`morse-encode` · Codificar Morse](https://bursia-utils-production.up.railway.app/tools/morse-encode): Codifica texto en código Morse internacional; letras separadas por espacios y palabras por " / ". EN: Encodes text in International Morse code: letters separated by spaces, words by " / ". Unsupported characters are reported, not dropped silently.
- [`morse-decode` · Decodificar Morse](https://bursia-utils-production.up.railway.app/tools/morse-decode): Decodifica código Morse internacional. EN: Decodes International Morse code (dots/dashes, letters separated by spaces, words by / or 3+ spaces).
- [`cipher-rot13` · ROT13](https://bursia-utils-production.up.railway.app/tools/cipher-rot13): Aplica ROT13 (o un desplazamiento César) a letras ASCII. No es cifrado. EN: Applies ROT13 (or any Caesar shift of ASCII letters) to text. Reversible obfuscation only; not encryption.
- [`unicode-escape` · Escapar Unicode](https://bursia-utils-production.up.railway.app/tools/unicode-escape): Escapa caracteres no ASCII como \uXXXX, \u{X} o U+XXXX. EN: Escapes non-ASCII characters as \uXXXX (JSON/JS, UTF-16 surrogates), \u{X} (ES6), or U+XXXX notation.
- [`unicode-unescape` · Desescapar Unicode](https://bursia-utils-production.up.railway.app/tools/unicode-unescape): Convierte escapes \uXXXX, \u{X}, \xXX y U+XXXX en caracteres. EN: Converts \uXXXX (including surrogate pairs), \u{X}, \xXX and U+XXXX escapes in text back to characters.
- [`json-string-escape` · Escapar cadena JSON](https://bursia-utils-production.up.railway.app/tools/json-string-escape): Escapa texto como literal de cadena JSON. EN: Escapes text as the body of a JSON string literal (quotes, backslashes, control characters), with or without surrounding quotes.
- [`json-string-unescape` · Desescapar cadena JSON](https://bursia-utils-production.up.railway.app/tools/json-string-unescape): Interpreta el cuerpo de un literal de cadena JSON y devuelve el texto. EN: Parses the body of a JSON string literal (with or without quotes) and returns the raw text.
- [`utf8-inspect` · Inspeccionar UTF-8 y puntos de código](https://bursia-utils-production.up.railway.app/tools/utf8-inspect): Lista cada carácter con su punto de código, bytes UTF-8 y unidades UTF-16, y totales. EN: Lists each character of a string with its Unicode code point, UTF-8 bytes and UTF-16 units, plus totals (bytes, code points, graphemes). Max 2,000 code points.
- [`data-uri-build` · Construir data: URI](https://bursia-utils-production.up.railway.app/tools/data-uri-build): Construye una URI data: (RFC 2397) desde texto o bytes y un tipo MIME. EN: Builds an RFC 2397 data: URI from text or base64 bytes and a MIME type, using base64 or percent-encoding.
- [`data-uri-parse` · Leer data: URI](https://bursia-utils-production.up.railway.app/tools/data-uri-parse): Analiza una URI data: en tipo MIME, parámetros, tamaño y contenido. EN: Parses an RFC 2397 data: URI into MIME type, parameters, base64 flag, byte size and content (UTF-8 text when valid, otherwise base64).
- [`bech32-encode` · Codificar Bech32](https://bursia-utils-production.up.railway.app/tools/bech32-encode): Codifica bytes hex con un prefijo legible como Bech32 (BIP-173) o Bech32m (BIP-350). EN: Encodes hex bytes with a human-readable prefix as Bech32 (BIP-173) or Bech32m (BIP-350), converting 8-bit bytes to 5-bit groups.
- [`bech32-decode` · Decodificar Bech32](https://bursia-utils-production.up.railway.app/tools/bech32-decode): Decodifica Bech32/Bech32m, detecta la variante y devuelve prefijo y datos. EN: Decodes a Bech32 or Bech32m string, detects which checksum variant is valid, and returns the prefix, 5-bit words and 8-bit data when convertible.
- [`qr-encode` · Generar código QR](https://bursia-utils-production.up.railway.app/tools/qr-encode): Codifica un texto como código QR (ISO/IEC 18004, versiones 1 a 40, corrección L/M/Q/H, modo numérico, alfanumérico o bytes UTF-8) y devuelve la matriz de módulos y un SVG. EN: Encodes text as a QR Code (ISO/IEC 18004, versions 1-40, error correction L/M/Q/H, numeric, alphanumeric or UTF-8 byte mode, automatic mask) and returns the module matrix and an SVG. Port of the Nayuki reference encoder; no image decoding.
- [`zlib-compress` · Comprimir (gzip, deflate, brotli)](https://bursia-utils-production.up.railway.app/tools/zlib-compress): Comprime texto o bytes con gzip (RFC 1952), zlib/deflate (RFC 1950/1951) o Brotli (RFC 7932) y devuelve base64, tamaños y razón, para comparar formatos. Los bytes pueden variar entre versiones de zlib; la descompresión sigue siendo compatible. EN: Compresses text or bytes with gzip (RFC 1952), zlib/deflate (RFC 1950/1951) or Brotli (RFC 7932) and returns base64 plus sizes and ratio, to compare formats. Output bytes may differ between zlib versions; decompression stays compatible.
- [`zlib-decompress` · Descomprimir (gzip, deflate, brotli)](https://bursia-utils-production.up.railway.app/tools/zlib-decompress): Descomprime datos base64 en gzip, zlib/deflate, deflate sin cabecera o Brotli (detecta gzip y zlib). La salida se limita a 1 MB, así que las «bombas» de compresión fallan de forma segura. Devuelve texto UTF-8 si es válido, si no base64. EN: Decompresses base64 data in gzip, zlib/deflate, raw deflate or Brotli (auto-detects gzip and zlib headers). Output is capped at 1 MB, so compression bombs fail safely. Returns UTF-8 text when valid, else base64.
- [`file-type-detect` · Detectar tipo de archivo por sus bytes](https://bursia-utils-production.up.railway.app/tools/file-type-detect): Detecta el tipo de archivo por sus primeros bytes (números mágicos): imágenes, PDF, comprimidos, Office, audio, video, fuentes, ejecutables y más, con heurísticas para texto, HTML, SVG y JSON. EN: Detects a file type from its first bytes (magic numbers): images, PDF, archives, Office/OOXML, audio, video, fonts, executables, SQLite, WebAssembly, plus text, HTML, XML/SVG and JSON heuristics; returns MIME type, extension and confidence. Does not trust file names.

## Hashes, HMAC y checksums / Hashes, HMAC and checksums (/mcp/hash, 36)

- [`hash-md5` · Hash MD5](https://bursia-utils-production.up.railway.app/tools/hash-md5): Resumen MD5. No es criptográficamente seguro; solo para checksums o compatibilidad. EN: MD5 digest (128-bit). Not collision resistant: use only for checksums, cache keys or legacy interop, never for security.
- [`hash-sha1` · Hash SHA-1](https://bursia-utils-production.up.railway.app/tools/hash-sha1): Resumen SHA-1. Con colisiones conocidas; solo para compatibilidad. EN: SHA-1 digest (160-bit). Collisions are practical; use only for legacy interop such as git object IDs, not for signatures.
- [`hash-sha224` · Hash SHA-224](https://bursia-utils-production.up.railway.app/tools/hash-sha224): Resumen SHA-224 (FIPS 180-4). EN: SHA-224 digest (FIPS 180-4) of text, hex or base64 input.
- [`hash-sha256` · Hash SHA-256](https://bursia-utils-production.up.railway.app/tools/hash-sha256): Resumen SHA-256 (FIPS 180-4) en hex, base64 o base64url. EN: SHA-256 digest (FIPS 180-4) of text, hex or base64 input, returned as hex, base64 or base64url.
- [`hash-sha384` · Hash SHA-384](https://bursia-utils-production.up.railway.app/tools/hash-sha384): Resumen SHA-384 (FIPS 180-4) de texto, hex o base64. EN: SHA-384 digest (FIPS 180-4) of text, hex or base64 input.
- [`hash-sha512` · Hash SHA-512](https://bursia-utils-production.up.railway.app/tools/hash-sha512): Resumen SHA-512 (FIPS 180-4) de texto, hex o base64. EN: SHA-512 digest (FIPS 180-4) of text, hex or base64 input.
- [`hash-sha512-256` · Hash SHA-512/256](https://bursia-utils-production.up.railway.app/tools/hash-sha512-256): Resumen SHA-512/256 (variante truncada con IV propios). EN: SHA-512/256 digest (FIPS 180-4 truncated variant with distinct IVs, not a plain truncation of SHA-512).
- [`hash-sha3-224` · Hash SHA3-224](https://bursia-utils-production.up.railway.app/tools/hash-sha3-224): Resumen SHA3-224 (FIPS 202) de texto, hex o base64. EN: SHA3-224 digest (FIPS 202) of text, hex or base64 input.
- [`hash-sha3-256` · Hash SHA3-256](https://bursia-utils-production.up.railway.app/tools/hash-sha3-256): Resumen SHA3-256 (FIPS 202). Distinto de keccak256 de Ethereum. EN: SHA3-256 digest (FIPS 202). Note: differs from Ethereum keccak256, which uses the original Keccak padding.
- [`hash-sha3-384` · Hash SHA3-384](https://bursia-utils-production.up.railway.app/tools/hash-sha3-384): Resumen SHA3-384 (FIPS 202) de texto, hex o base64. EN: SHA3-384 digest (FIPS 202) of text, hex or base64 input.
- [`hash-sha3-512` · Hash SHA3-512](https://bursia-utils-production.up.railway.app/tools/hash-sha3-512): Resumen SHA3-512 (FIPS 202) de texto, hex o base64. EN: SHA3-512 digest (FIPS 202) of text, hex or base64 input.
- [`hash-blake2b512` · Hash BLAKE2b-512](https://bursia-utils-production.up.railway.app/tools/hash-blake2b512): Resumen BLAKE2b-512 (RFC 7693), sin clave. EN: BLAKE2b digest with 512-bit output (RFC 7693), unkeyed.
- [`hash-blake2s256` · Hash BLAKE2s-256](https://bursia-utils-production.up.railway.app/tools/hash-blake2s256): Resumen BLAKE2s-256 (RFC 7693), sin clave. EN: BLAKE2s digest with 256-bit output (RFC 7693), unkeyed.
- [`hash-ripemd160` · Hash RIPEMD-160](https://bursia-utils-production.up.railway.app/tools/hash-ripemd160): Resumen RIPEMD-160, usado en HASH160 de Bitcoin. EN: RIPEMD-160 digest (160-bit), used inside Bitcoin HASH160.
- [`hash-sm3` · Hash SM3](https://bursia-utils-production.up.railway.app/tools/hash-sm3): Resumen SM3 (estándar chino GB/T 32905). EN: SM3 digest (Chinese national standard GB/T 32905, 256-bit).
- [`hash-shake128` · SHAKE128 (salida extensible)](https://bursia-utils-production.up.railway.app/tools/hash-shake128): Función de salida extensible SHAKE128 (FIPS 202) con longitud elegida. EN: SHAKE128 extendable-output function (FIPS 202) with a chosen output length of 1 to 1024 bytes.
- [`hash-shake256` · SHAKE256 (salida extensible)](https://bursia-utils-production.up.railway.app/tools/hash-shake256): Función de salida extensible SHAKE256 (FIPS 202) con longitud elegida. EN: SHAKE256 extendable-output function (FIPS 202) with a chosen output length of 1 to 1024 bytes.
- [`hash-keccak256` · Keccak-256 (Ethereum)](https://bursia-utils-production.up.railway.app/tools/hash-keccak256): Keccak-256 con el relleno original de Keccak, como en Ethereum (direcciones, selectores). Distinto de SHA3-256. EN: Keccak-256 with original Keccak padding, as used by Ethereum for addresses, function selectors and event topics. Differs from SHA3-256.
- [`checksum-crc32` · Checksum CRC-32](https://bursia-utils-production.up.railway.app/tools/checksum-crc32): CRC-32 (IEEE, como en zip/PNG). Checksum no criptográfico. EN: CRC-32 (IEEE 802.3, as in zip/gzip/PNG). Non-cryptographic error-detection checksum.
- [`checksum-crc32c` · Checksum CRC-32C](https://bursia-utils-production.up.railway.app/tools/checksum-crc32c): CRC-32C (Castagnoli, usado en iSCSI, ext4). No criptográfico. EN: CRC-32C (Castagnoli polynomial, used by iSCSI, ext4, SCTP, gRPC). Non-cryptographic.
- [`checksum-crc16` · Checksum CRC-16/CCITT](https://bursia-utils-production.up.railway.app/tools/checksum-crc16): CRC-16/CCITT-FALSE (polinomio 0x1021, inicio 0xFFFF). No criptográfico. EN: CRC-16/CCITT-FALSE (poly 0x1021, init 0xFFFF, no reflection). Non-cryptographic.
- [`checksum-adler32` · Checksum Adler-32](https://bursia-utils-production.up.railway.app/tools/checksum-adler32): Checksum Adler-32 (RFC 1950, zlib). No criptográfico. EN: Adler-32 checksum (RFC 1950, zlib). Non-cryptographic.
- [`checksum-fnv1a32` · Hash FNV-1a de 32 bits](https://bursia-utils-production.up.railway.app/tools/checksum-fnv1a32): Hash FNV-1a de 32 bits, rápido y no criptográfico. EN: FNV-1a 32-bit hash, a fast non-cryptographic hash for hash tables and sharding.
- [`checksum-fnv1a64` · Hash FNV-1a de 64 bits](https://bursia-utils-production.up.railway.app/tools/checksum-fnv1a64): Hash FNV-1a de 64 bits, no criptográfico. EN: FNV-1a 64-bit hash, non-cryptographic.
- [`checksum-murmur3-32` · MurmurHash3 de 32 bits](https://bursia-utils-production.up.railway.app/tools/checksum-murmur3-32): MurmurHash3 x86_32 con semilla opcional. No criptográfico. EN: MurmurHash3 x86_32 with optional 32-bit seed. Non-cryptographic; common for bloom filters and partitioning.
- [`checksum-xxh32` · xxHash32](https://bursia-utils-production.up.railway.app/tools/checksum-xxh32): xxHash32 con semilla opcional. Hash no criptográfico muy rápido. EN: xxHash32 with optional 32-bit seed. Very fast non-cryptographic hash.
- [`hmac-sha256` · HMAC-SHA256](https://bursia-utils-production.up.railway.app/tools/hmac-sha256): HMAC (RFC 2104) con SHA256. EN: HMAC (RFC 2104) using SHA256 over text, hex or base64 data with a text, hex or base64 key.
- [`hmac-sha512` · HMAC-SHA512](https://bursia-utils-production.up.railway.app/tools/hmac-sha512): HMAC (RFC 2104) con SHA512. EN: HMAC (RFC 2104) using SHA512 over text, hex or base64 data with a text, hex or base64 key.
- [`hmac-sha1` · HMAC-SHA1](https://bursia-utils-production.up.railway.app/tools/hmac-sha1): HMAC (RFC 2104) con SHA1. EN: HMAC (RFC 2104) using SHA1 over text, hex or base64 data with a text, hex or base64 key. Uses a legacy hash; HMAC remains usable for interop, SHA-256 is the modern default.
- [`hmac-sha384` · HMAC-SHA384](https://bursia-utils-production.up.railway.app/tools/hmac-sha384): HMAC (RFC 2104) con SHA384. EN: HMAC (RFC 2104) using SHA384 over text, hex or base64 data with a text, hex or base64 key.
- [`hmac-md5` · HMAC-MD5](https://bursia-utils-production.up.railway.app/tools/hmac-md5): HMAC (RFC 2104) con MD5. EN: HMAC (RFC 2104) using MD5 over text, hex or base64 data with a text, hex or base64 key. Uses a legacy hash; HMAC remains usable for interop, SHA-256 is the modern default.
- [`hmac-sha3-256` · HMAC-SHA3-256](https://bursia-utils-production.up.railway.app/tools/hmac-sha3-256): HMAC (RFC 2104) con SHA3-256. EN: HMAC (RFC 2104) using SHA3-256 over text, hex or base64 data with a text, hex or base64 key.
- [`hmac-verify` · Verificar HMAC](https://bursia-utils-production.up.railway.app/tools/hmac-verify): Recalcula un HMAC y lo compara en tiempo constante con el esperado (p. ej. firma de webhook). EN: Recomputes an HMAC over the data and compares it with an expected hex/base64 MAC in constant time, e.g. to check a webhook signature.
- [`kdf-pbkdf2` · Derivar clave con PBKDF2](https://bursia-utils-production.up.railway.app/tools/kdf-pbkdf2): Deriva una clave con PBKDF2 (RFC 8018). Iteraciones máx. 50.000. EN: Derives a key with PBKDF2 (RFC 8018) using HMAC-SHA256/SHA512/SHA1. Iterations capped at 50,000 and output at 128 bytes to keep calls fast.
- [`kdf-hkdf` · Derivar clave con HKDF](https://bursia-utils-production.up.railway.app/tools/kdf-hkdf): Deriva material de clave con HKDF (RFC 5869). EN: Derives key material with HKDF (RFC 5869) using SHA-256 or SHA-512, from hex-encoded input key material, salt and info.
- [`hash-multi` · Varios hashes a la vez](https://bursia-utils-production.up.railway.app/tools/hash-multi): Calcula varios resúmenes (md5, sha1, sha256, etc.) de una entrada en una sola llamada. EN: Computes several digests (md5, sha1, sha256, sha512, sha3-256, blake2b512, keccak256, crc32) of one input in a single call.

## Fechas, horas y zonas horarias / Dates, times and time zones (/mcp/tiempo, 28)

- [`datetime-parse` · Leer fecha y hora](https://bursia-utils-production.up.railway.app/tools/datetime-parse): Analiza una fecha/hora ISO 8601 o RFC 2822 y devuelve ISO UTC, Unix, hora local con desfase, día de la semana, semana ISO y trimestre. EN: Parses an ISO 8601 or RFC 2822 date-time (or YYYY-MM-DD) and returns UTC ISO, Unix seconds/ms, local wall time in a time zone with offset, weekday, day of year, ISO week, quarter and leap-year flag.
- [`timestamp-convert` · Timestamp Unix ↔ ISO](https://bursia-utils-production.up.railway.app/tools/timestamp-convert): Convierte un timestamp Unix a ISO 8601 (detecta s, ms, µs o ns) o una fecha ISO a Unix. EN: Converts a Unix timestamp to ISO 8601 (auto-detecting seconds, milliseconds, microseconds or nanoseconds by magnitude, or explicit unit), or an ISO date-time to Unix seconds and milliseconds.
- [`timezone-shift` · Convertir hora entre zonas](https://bursia-utils-production.up.railway.app/tools/timezone-shift): Convierte una fecha/hora de una zona horaria IANA a otra, considerando horario de verano. EN: Converts a wall-clock date-time from one IANA time zone to another (DST-aware via Intl), or an absolute instant (with Z/offset) to a target zone.
- [`timezone-info` · Datos de zona horaria](https://bursia-utils-production.up.railway.app/tools/timezone-info): Informa el desfase UTC de una zona horaria en un instante, si aplica horario de verano y sus nombres. EN: Reports a time zone's UTC offset and local time at an instant, its January and July offsets, whether DST is in effect, and the short and long zone names.
- [`timezone-list` · Lista de zonas horarias IANA](https://bursia-utils-production.up.railway.app/tools/timezone-list): Lista las zonas horarias IANA soportadas, con filtro opcional. EN: Lists the IANA time zone identifiers supported by this runtime, optionally filtered by a case-insensitive substring (e.g. America, Bogota).
- [`timezone-overlap` · Horario laboral común entre zonas](https://bursia-utils-production.up.railway.app/tools/timezone-overlap): Para una fecha y varias zonas horarias con su horario laboral, encuentra la franja en que todos coinciden. EN: For a date and a list of time zones with local working hours, finds the UTC window when everyone is within working hours, shown in each zone's local time.
- [`datetime-format` · Formatear fecha y hora](https://bursia-utils-production.up.railway.app/tools/datetime-format): Formatea una fecha/hora en una zona e idioma con estilos Intl o un patrón (YYYY MM DD HH mm…). EN: Formats an instant in a time zone and locale, either with Intl styles (full/long/medium/short) or a pattern (YYYY MM DD HH mm ss SSS MMMM ddd dddd hh A Z; [text] for literals).
- [`date-add` · Sumar duración a una fecha](https://bursia-utils-production.up.railway.app/tools/date-add): Suma o resta años, meses, semanas, días, horas, minutos y segundos a una fecha; ajusta fines de mes. EN: Adds (or subtracts, with negatives) years, months, weeks, days, hours, minutes and seconds to a date-time. Calendar parts use local wall time in the zone and clamp month ends (Jan 31 + 1 month = Feb 28/29).
- [`date-between` · Diferencia entre fechas](https://bursia-utils-production.up.railway.app/tools/date-between): Diferencia entre dos fechas: desglose en años, meses y días y totales en semanas, días, horas, minutos y segundos. EN: Difference between two dates or date-times: calendar breakdown (years, months, days) plus totals in weeks, days, hours, minutes and seconds; sign indicates order.
- [`age-calculate` · Calcular edad](https://bursia-utils-production.up.railway.app/tools/age-calculate): Edad exacta en años, meses y días a una fecha de referencia, días vividos y días para el próximo cumpleaños. EN: Exact age in years, months and days on a reference date (required, for determinism), total days lived, and days until the next birthday (Feb 29 birthdays observed on Feb 28 in common years).
- [`duration-parse` · Leer duración ISO 8601](https://bursia-utils-production.up.railway.app/tools/duration-parse): Analiza una duración ISO 8601 (p. ej. P1Y2M3DT4H5M6S) en componentes y segundos totales. EN: Parses an ISO 8601 duration (e.g. P1Y2M3DT4H5M6S, PT90M, P2W) into components and total seconds (years = 365.2425 days and months = 30.436875 days, flagged as approximate).
- [`duration-format` · Formatear segundos como duración](https://bursia-utils-production.up.railway.app/tools/duration-format): Formatea segundos como duración ISO 8601, texto compacto, reloj y palabras en inglés o español. EN: Formats a number of seconds as an ISO 8601 duration (days and time only), a compact string (1d 2h 3m 4s), a clock (26:03:04) and words in English or Spanish.
- [`business-days-between` · Días hábiles entre fechas](https://bursia-utils-production.up.railway.app/tools/business-days-between): Cuenta días hábiles entre dos fechas, excluyendo fines de semana configurables y festivos. EN: Counts working days between two dates, excluding configurable weekend days and a list of holidays. By default counts days after start up to and including end; inclusive counts both ends.
- [`business-days-add` · Sumar días hábiles](https://bursia-utils-production.up.railway.app/tools/business-days-add): Suma o resta N días hábiles a una fecha, saltando fines de semana y festivos. EN: Adds (or subtracts) N working days to a date, skipping configurable weekend days and given holidays; useful for due dates and SLAs.
- [`easter-sunday` · Fecha de Pascua](https://bursia-utils-production.up.railway.app/tools/easter-sunday): Calcula el Domingo de Pascua occidental y ortodoxo y fechas relacionadas (Miércoles de Ceniza, Jueves y Viernes Santo, Pentecostés…). EN: Computes Western (Gregorian computus) and Orthodox Easter Sunday for a year 1583-4099, plus related Western dates: Ash Wednesday, Palm Sunday, Holy Thursday, Good Friday, Ascension, Pentecost, Corpus Christi.
- [`date-iso-week` · Semana ISO de una fecha](https://bursia-utils-production.up.railway.app/tools/date-iso-week): Convierte una fecha a semana ISO 8601 (AAAA-Www-D) o una semana ISO a su rango de fechas. EN: Converts a date to its ISO 8601 week date (YYYY-Www-D) or an ISO week (year + week) to its Monday-Sunday date range; also reports weeks in that ISO year.
- [`month-info` · Datos del mes y del año](https://bursia-utils-production.up.railway.app/tools/month-info): Para un año y mes: días, si es bisiesto, día de la semana del primero y último, días entre semana y trimestre. EN: For a year and month: number of days, leap year, weekday of the first and last day, number of weekdays (Mon-Fri) and weekend days, and the quarter.
- [`calendar-month` · Calendario del mes](https://bursia-utils-production.up.railway.app/tools/calendar-month): Devuelve un mes como cuadrícula de semanas (inicio lunes o domingo) con números de semana ISO. EN: Returns a month as a grid of weeks (Monday or Sunday first) with ISO week numbers, suitable for rendering a calendar.
- [`date-range` · Fechas de un rango](https://bursia-utils-production.up.railway.app/tools/date-range): Lista fechas entre inicio y fin con paso en días, semanas o meses (máx. 1.000). EN: Lists dates from start to end (inclusive) stepping by days, weeks or months (month steps clamp to month end), up to 1,000 dates, optionally skipping weekends.
- [`date-relative` · Tiempo relativo en palabras](https://bursia-utils-production.up.railway.app/tools/date-relative): Describe el tiempo entre dos instantes como frase localizada ("en 3 días", "hace 2 horas"). EN: Describes the time between an instant and a reference instant as a localized phrase via Intl.RelativeTimeFormat ("in 3 days", "hace 2 horas"), choosing the largest sensible unit.
- [`julian-day` · Día juliano](https://bursia-utils-production.up.railway.app/tools/julian-day): Convierte fecha/hora UTC a Fecha Juliana, MJD y número de día juliano, o viceversa. EN: Converts a UTC date-time to Julian Date, Modified Julian Date and Julian Day Number, or a Julian Date back to UTC.
- [`fiscal-period` · Año y trimestre fiscal](https://bursia-utils-production.up.railway.app/tools/fiscal-period): Dada una fecha y el mes de inicio del año fiscal, devuelve año, trimestre y mes fiscal con sus límites. EN: Given a date and the month the fiscal year starts, returns the fiscal year (named by its ending calendar year or its starting year), fiscal quarter, fiscal month and period bounds.
- [`cron-explain` · Explicar expresión cron](https://bursia-utils-production.up.railway.app/tools/cron-explain): Valida una expresión cron de 5 campos y la describe en inglés y español, con los valores expandidos. EN: Validates a 5-field cron expression (minute hour day-of-month month day-of-week; lists, ranges, steps, names, @daily-style macros) and describes it in English and Spanish, with the expanded field values.
- [`cron-next-runs` · Próximas ejecuciones de cron](https://bursia-utils-production.up.railway.app/tools/cron-next-runs): Lista las próximas N ejecuciones (≤ 50) de una expresión cron después de un instante, en una zona horaria IANA. EN: Lists the next N (≤ 50) run times of a 5-field cron expression after a given instant, evaluated in an IANA time zone (DST-aware; non-existent local times are skipped). Searches at most 8 years ahead.
- [`sun-times` · Amanecer, atardecer y duración del día](https://bursia-utils-production.up.railway.app/tools/sun-times): Salida y puesta del sol, mediodía solar, crepúsculo civil y duración del día (aprox. ±1-2 min) para una ubicación y fecha. EN: Approximate sunrise, sunset, solar noon, civil twilight and day length for a latitude/longitude and date (astronomical formulas, about ±1-2 min), shown in UTC and a chosen time zone.
- [`moon-phase` · Fase lunar](https://bursia-utils-production.up.railway.app/tools/moon-phase): Fase lunar aproximada para un instante: edad en días, fracción iluminada y nombre de la fase (en/es). EN: Approximate moon phase for an instant from the mean synodic month (29.530589 days) since the 2000-01-06 18:14 UTC new moon: age in days, illuminated fraction and phase name (en/es). Accuracy about ±1 day for names.
- [`time-now` · Fecha y hora actual en una zona horaria](https://bursia-utils-production.up.railway.app/tools/time-now): Devuelve el instante actual (o uno dado, para pruebas) en una zona horaria IANA: ISO 8601 con desfase, UTC, Unix, desfase, horario de verano, fecha y hora local, día de la semana y textos en español e inglés. EN: Returns the current instant (or a given one, for tests) in an IANA time zone: ISO 8601 with offset, UTC, Unix seconds and milliseconds, offset, daylight saving, local date and time, ISO weekday and texts in Spanish and English.
- [`city-local-time` · Hora local en una ciudad](https://bursia-utils-production.up.railway.app/tools/city-local-time): Devuelve la fecha, la hora local, el desfase UTC y si rige el horario de verano en una ciudad dada por nombre (resuelta a su zona IANA con la lista GeoNames incluida), ahora o en un instante dado. EN: Returns the local date, time, UTC offset and daylight-saving status in a city given by name (resolved to its IANA time zone from the embedded GeoNames list), now or at a given instant, with DST transitions from the runtime time-zone database.

## Comercio y matemática financiera / Commerce and financial math (/mcp/finanzas, 30)

- [`emvco-qr-parse` · Leer QR de pago EMVCo (Bre-B, Pix)](https://bursia-utils-production.up.railway.app/tools/emvco-qr-parse): Lee un payload QR EMVCo de comercio (TLV) en sus campos y plantillas, comprueba el CRC16 y los campos obligatorios, y rotula plantillas Pix y Bre-B (EASPBV Colombia). Solo formato; nunca confirma un pago. EN: Parses an EMVCo merchant-presented QR payload (TLV) into its data objects and templates, checks the CRC16 and the mandatory fields, and labels Pix and Colombian EASPBV / Bre-B templates by their GUI. Format check only; it never confirms a payment.
- [`br-pix-brcode` · Crear o leer BR Code Pix (copia e cola)](https://bursia-utils-production.up.railway.app/tools/br-pix-brcode): Construye un BR Code Pix «copia e cola» (TLV EMVCo con GUI br.gov.bcb.pix, llave o URL dinámica, monto, txid y CRC16) o lee y revisa uno, según los manuales del Banco Central do Brasil. Solo formato; nunca afirma un pago. EN: Builds a Pix "copia e cola" BR Code (EMVCo TLV with GUI br.gov.bcb.pix, key or dynamic URL, amount, txid, CRC16-CCITT) or parses and checks one, following the Banco Central do Brasil manuals. Format only; it never claims a payment.
- [`vat-calculate` · Calcular IVA o impuesto de ventas](https://bursia-utils-production.up.railway.app/tools/vat-calculate): Suma o extrae un impuesto (IVA/VAT) a cualquier tasa, redondeando a las unidades menores de la moneda. EN: Adds tax to a net amount or extracts it from a gross (tax-inclusive) amount at any rate, rounding to the currency's minor units.
- [`margin-markup` · Margen y recargo](https://bursia-utils-production.up.railway.app/tools/margin-markup): A partir de costo y precio de venta calcula utilidad, margen bruto % (sobre precio) y markup % (sobre costo). EN: From unit cost and selling price, computes profit, gross margin % (profit/price) and markup % (profit/cost), and the price multiplier.
- [`price-from-margin` · Precio desde margen objetivo](https://bursia-utils-production.up.railway.app/tools/price-from-margin): Calcula el precio necesario para un margen objetivo (precio = costo / (1 − m)) o un markup, y convierte entre ambos. EN: Computes the selling price needed for a target gross margin % (price = cost / (1 − m)) or markup % (price = cost × (1 + k)), and converts between margin and markup.
- [`discount-calculate` · Calcular descuentos](https://bursia-utils-production.up.railway.app/tools/discount-calculate): Aplica uno o varios descuentos (porcentaje o fijo), compuestos o sumados, y opcionalmente el impuesto después. EN: Applies one or more percentage and fixed discounts to a price, either compounded in order or summed, optionally adding tax afterwards; reports effective discount %.
- [`invoice-total` · Totales de factura](https://bursia-utils-production.up.railway.app/tools/invoice-total): Calcula una factura desde ítems (cantidad, precio, descuento %, impuesto %): totales por línea, subtotal, impuestos por tasa y total. EN: Computes an invoice from line items (quantity, unit price, line discount %, tax rate %): line totals, subtotal, discount, tax grouped by rate, and grand total, rounded per line to the currency's minor units.
- [`currency-format` · Formatear moneda por país](https://bursia-utils-production.up.railway.app/tools/currency-format): Formatea un monto en cualquier moneda ISO 4217 según el idioma/país (símbolo, código o nombre), con sus decimales estándar. EN: Formats an amount in any ISO 4217 currency for a locale via Intl (symbol, narrow symbol, code or name), using the currency's standard minor units unless overridden, and accounting style for negatives.
- [`currency-info` · Datos de moneda (ISO 4217)](https://bursia-utils-production.up.railway.app/tools/currency-info): Datos de una moneda ISO 4217 (decimales, símbolo y nombre en inglés y español). Sin tasas de cambio. EN: Returns facts about an ISO 4217 currency from the runtime's CLDR data: display decimals (CLDR may differ from ISO, e.g. COP shows 0), symbol and narrow symbol in a locale, and localized names in English and Spanish. No exchange rates.
- [`money-allocate` · Repartir dinero sin perder centavos](https://bursia-utils-production.up.railway.app/tools/money-allocate): Divide un monto en partes (por proporciones o iguales) en unidades menores, sin perder centavos: la suma siempre cuadra. EN: Splits an amount into parts by ratios or equally, in integer minor units using the largest-remainder method so the parts always add up exactly to the total.
- [`payment-fee` · Comisión de pago (bruto/neto)](https://bursia-utils-production.up.railway.app/tools/payment-fee): Para una comisión de porcentaje + fijo: cuánto cobrar para recibir un neto, o cuánto recibe de un cobro bruto. EN: For a processor fee of percent + fixed amount: the amount to charge to net a target amount (gross-up), or the net received from a gross charge.
- [`bill-split` · Dividir cuenta con propina](https://bursia-utils-production.up.railway.app/tools/bill-split): Divide una cuenta entre personas con propina opcional y redondeo de cada parte. EN: Splits a bill among people with an optional tip % (on pre-tax or total) and rounding up of each share, keeping the shares summing to the total charged.
- [`unit-price-compare` · Comparar precios por unidad](https://bursia-utils-production.up.railway.app/tools/unit-price-compare): Ordena ofertas por precio por unidad (kg, litro o unidad), convirtiendo g/kg/lb/oz y ml/l/fl_oz. EN: Ranks product offers by price per unit (per kg, per liter or per item), converting g/kg/lb/oz and ml/l/fl_oz, to find the best value.
- [`salary-convert` · Convertir salario por periodo](https://bursia-utils-production.up.railway.app/tools/salary-convert): Convierte salarios entre hora, día, semana, quincena, mes y año con horas y semanas configurables. EN: Converts pay between hourly, daily, weekly, biweekly, monthly and annual figures using configurable hours per week, days per week and weeks per year.
- [`interest-rate-convert` · Convertir tasa de interés (EA, nominal)](https://bursia-utils-production.up.railway.app/tools/interest-rate-convert): Convierte tasas entre efectiva anual (EA), nominal anual (p. ej. NMV) y efectiva periódica, vencidas o anticipadas. EN: Converts interest rates between effective annual (EA/APY), nominal annual compounded m times (APR, e.g. NMV monthly in Colombia) and effective periodic rates, for advance or arrears payment.
- [`fin-npv` · Valor presente neto (VPN)](https://bursia-utils-production.up.railway.app/tools/fin-npv): Valor presente neto de flujos de caja a una tasa por periodo; el primer flujo es el tiempo 0. EN: Net present value of cash flows at a discount rate per period, with the first flow at time 0 (not discounted) — note Excel NPV() discounts the first flow.
- [`fin-irr` · Tasa interna de retorno (TIR)](https://bursia-utils-production.up.railway.app/tools/fin-irr): Tasa interna de retorno de flujos periódicos; null si no hay cambio de signo. EN: Internal rate of return of periodic cash flows (Newton-Raphson with bisection fallback); returns null when no sign change exists.
- [`fin-xirr` · TIR con fechas irregulares (XIRR)](https://bursia-utils-production.up.railway.app/tools/fin-xirr): TIR anualizada para flujos en fechas irregulares (como XIRR de Excel). EN: Annualized internal rate of return for cash flows on arbitrary dates (actual/365, like Excel XIRR).
- [`fin-compound-interest` · Interés compuesto](https://bursia-utils-production.up.railway.app/tools/fin-compound-interest): Valor futuro con interés compuesto A = P(1 + r/n)^(n·t), con aportes periódicos opcionales. EN: Future value of a principal with compound interest A = P(1 + r/n)^(n·t), optional regular contributions at period end, and the interest earned.
- [`fin-simple-interest` · Interés simple](https://bursia-utils-production.up.railway.app/tools/fin-simple-interest): Interés simple I = P·r·t y monto total, con tiempo en años, meses o días. EN: Simple interest I = P·r·t and the total amount, with time in years, months or days (actual/365 or 360 basis).
- [`fin-loan-payment` · Cuota de un préstamo](https://bursia-utils-production.up.railway.app/tools/fin-loan-payment): Cuota fija de un préstamo amortizable (anualidad), total pagado e intereses. EN: Fixed periodic payment for an amortizing loan: PMT = P·r / (1 − (1 + r)^−n), with total paid and total interest.
- [`fin-loan-amortization` · Tabla de amortización](https://bursia-utils-production.up.railway.app/tools/fin-loan-amortization): Tabla de amortización completa (cuota, interés, capital, saldo) hasta 600 periodos. EN: Full amortization schedule (payment, interest, principal, balance per period) for a fixed-payment loan, up to 600 rows; the last payment absorbs rounding.
- [`fin-tvm` · Valor del dinero en el tiempo](https://bursia-utils-production.up.railway.app/tools/fin-tvm): Resuelve la variable faltante del valor del dinero en el tiempo (pv, fv, pmt, nper o tasa). EN: Solves for the one missing TVM variable (pv, fv, pmt, nper or rate per period) given the others, with Excel sign convention (cash out negative) and payments at end or beginning.
- [`fin-cagr` · Tasa de crecimiento anual compuesta](https://bursia-utils-production.up.railway.app/tools/fin-cagr): Tasa de crecimiento anual compuesta (CAGR) y crecimiento total. EN: CAGR = (end / start)^(1 / years) − 1, plus total growth.
- [`fin-roi` · Retorno de la inversión (ROI)](https://bursia-utils-production.up.railway.app/tools/fin-roi): Retorno sobre la inversión (ROI) y ROI anualizado. EN: ROI = (gain − cost) / cost, plus annualized ROI when a holding period in years is given.
- [`fin-break-even` · Punto de equilibrio](https://bursia-utils-production.up.railway.app/tools/fin-break-even): Punto de equilibrio en unidades e ingresos, y margen de contribución. EN: Break-even units = fixed costs / (price − variable cost per unit), the revenue at that point, and contribution margin.
- [`fin-bond` · Precio, rendimiento y duración de bono](https://bursia-utils-production.up.railway.app/tools/fin-bond): Bono de cupón fijo en fecha de cupón: precio a partir del rendimiento, o rendimiento al vencimiento a partir del precio (bisección), más duración de Macaulay y modificada, convexidad y rendimiento corriente. Tasas en % anual; sin intereses corridos ni convención de días. EN: Fixed-coupon bond on a coupon date: price from yield or yield to maturity from price (bisection), plus Macaulay and modified duration, convexity and current yield. Rates in percent per year; no accrued interest or day count.
- [`fin-option-price` · Precio de opción europea](https://bursia-utils-production.up.railway.app/tools/fin-option-price): Valora una opción europea call y put con el modelo Black-Scholes-Merton (dividendo continuo) y devuelve delta, gamma, vega (por punto de volatilidad), theta (por año y por día) y rho (por punto de tasa). Tasas y volatilidad en %. EN: Prices a European call and put with the Black-Scholes-Merton model (continuous dividend yield) and returns delta, gamma, vega (per 1 vol point), theta (per year and per day) and rho (per 1 rate point). Rates and volatility in percent.
- [`fin-risk-ratios` · Indicadores de riesgo de rentabilidades](https://bursia-utils-production.up.railway.app/tools/fin-risk-ratios): A partir de retornos periódicos (decimales, 0,01 = 1 %): retorno anualizado (geométrico) y volatilidad, índices de Sharpe y Sortino frente a una tasa libre de riesgo anual, máxima caída con su inicio y fin, y mejor/peor periodo. EN: From periodic returns (decimals, 0.01 = 1%): annualized return (geometric) and volatility, Sharpe and Sortino ratios against an annual risk-free rate, maximum drawdown with its start and end, and best/worst period.
- [`fin-loan-prepayment` · Abono extraordinario a un crédito](https://bursia-utils-production.up.railway.app/tools/fin-loan-prepayment): Calcula el efecto de un abono extraordinario a capital en un crédito de cuota fija tras cierto número de cuotas: el saldo y, para reducir plazo o reducir cuota, la nueva cuota, los periodos, los intereses y el ahorro. EN: Computes the effect of an extra principal payment on a fixed-payment loan after a number of payments: the balance, and for both options (keep the payment and shorten the term, or keep the term and lower the payment) the new payment, periods, interest and interest saved.

## Matemáticas, estadística y unidades / Math, statistics and units (/mcp/matematicas, 58)

- [`round-number` · Redondear número](https://bursia-utils-production.up.railway.app/tools/round-number): Redondea a N decimales con aritmética decimal exacta y modos half_up, half_even (bancario), up, down, ceiling, floor. EN: Rounds a number to N decimal places using exact decimal arithmetic (no float drift: 1.005 → 1.01 half-up) with modes half_up, half_even (banker's), half_down, up, down, ceiling, floor.
- [`stats-describe` · Estadística descriptiva](https://bursia-utils-production.up.railway.app/tools/stats-describe): Estadística descriptiva: media, mediana, moda, mínimo, máximo, varianza y desviación estándar, cuartiles. EN: Count, sum, mean, median, mode(s), min, max, range, population and sample variance/standard deviation, and quartiles (linear method) of a list of numbers.
- [`stats-percentile` · Percentiles y cuantiles](https://bursia-utils-production.up.railway.app/tools/stats-percentile): Calcula percentiles (0-100) con método seleccionable (lineal, exclusivo, rango más cercano). EN: Computes one or more percentiles (0-100) of a list of numbers with a selectable method (linear = Excel PERCENTILE.INC / numpy default, exclusive, nearest_rank).
- [`stats-means` · Medias aritmética, geométrica y armónica](https://bursia-utils-production.up.railway.app/tools/stats-means): Calcula media aritmética, geométrica, armónica, cuadrática y ponderada. EN: Computes arithmetic, geometric and harmonic means (the latter two only for positive values), root mean square, and a weighted mean when weights are supplied.
- [`stats-correlation` · Correlación (Pearson, Spearman)](https://bursia-utils-production.up.railway.app/tools/stats-correlation): Mide cómo se mueven juntas dos series de igual longitud: coeficiente de Pearson (lineal), de Spearman (por rangos, menos sensible a valores atípicos) y covarianza. EN: Measures how two equal-length series move together: the Pearson coefficient (linear), the Spearman coefficient (rank-based, less sensitive to outliers) and the covariance.
- [`stats-regression` · Regresión lineal simple](https://bursia-utils-production.up.railway.app/tools/stats-regression): Ajuste por mínimos cuadrados y = pendiente·x + intercepto, con R² y predicciones. EN: Least-squares fit y = slope·x + intercept with R², standard error, and optional predictions for new x values.
- [`stats-moving-average` · Media móvil](https://bursia-utils-production.up.railway.app/tools/stats-moving-average): Media móvil simple (SMA) o exponencial (EMA) de una serie. EN: Simple (SMA) or exponential (EMA, alpha = 2/(window+1)) moving average of a series; SMA returns null until the window fills.
- [`stats-histogram` · Histograma](https://bursia-utils-production.up.railway.app/tools/stats-histogram): Agrupa números en intervalos de igual ancho y devuelve conteos. EN: Buckets numbers into equal-width bins (count or explicit edges), returning bin ranges and counts; the last bin includes its upper edge.
- [`stats-zscore` · Puntuaciones Z](https://bursia-utils-production.up.railway.app/tools/stats-zscore): Estandariza valores como (x − media) / desviación y marca los que superan un umbral. EN: Standardizes each value as (x − mean) / stddev (population or sample), and flags values whose |z| exceeds a threshold.
- [`stats-outliers-iqr` · Valores atípicos (IQR)](https://bursia-utils-production.up.railway.app/tools/stats-outliers-iqr): Detecta valores atípicos fuera de las vallas de Tukey (Q1 − k·IQR, Q3 + k·IQR). EN: Detects outliers outside Tukey fences Q1 − k·IQR and Q3 + k·IQR (k = 1.5 default, 3 for extreme), using linear quartiles.
- [`percent-change` · Variación porcentual](https://bursia-utils-production.up.railway.app/tools/percent-change): Variación porcentual entre un valor anterior y uno nuevo. EN: Percentage change from an old value to a new value ((new − old) / |old| × 100) and the absolute difference.
- [`percent-of` · Porcentaje de un valor](https://bursia-utils-production.up.railway.app/tools/percent-of): Calcula el p% de un valor y el valor aumentado o disminuido en p%. EN: Computes p% of a value, and optionally the value increased or decreased by p%.
- [`percent-ratio` · Qué porcentaje es X de Y](https://bursia-utils-production.up.railway.app/tools/percent-ratio): Devuelve qué porcentaje representa una parte de un total. EN: Returns what percentage a part is of a whole (part / whole × 100).
- [`is-prime` · ¿Es número primo?](https://bursia-utils-production.up.railway.app/tools/is-prime): Prueba de primalidad Miller-Rabin determinista hasta 3,3·10^24, con primos siguiente y anterior. EN: Deterministic Miller-Rabin primality test for integers up to 3.3·10^24 (given as number or decimal string), plus the next and previous primes.
- [`prime-factorize` · Factorización en primos](https://bursia-utils-production.up.railway.app/tools/prime-factorize): Factoriza un entero (hasta 10^20) en primos con exponentes y cuenta de divisores. EN: Factorizes an integer up to 10^20 into primes (trial division plus Pollard rho), returning factors with exponents and the divisor count.
- [`int-gcd-lcm` · MCD y MCM](https://bursia-utils-production.up.railway.app/tools/int-gcd-lcm): MCD y MCM exactos de una lista de enteros de hasta 100 dígitos (BigInt, algoritmo de Euclides); el resultado es texto para no perder dígitos. Útil para fracciones, turnos y tamaños de lote. EN: Exact GCD and LCM of a list of integers of up to 100 digits each, computed with BigInt and Euclid's algorithm; returned as text, keeping every digit. Useful for fractions, shift rotations and batch sizes.
- [`modular-arithmetic` · Aritmética modular](https://bursia-utils-production.up.railway.app/tools/modular-arithmetic): Calcula base^exponente mod m y el inverso modular cuando existe. EN: Computes base^exponent mod m (fast exponentiation) and, when it exists, the modular inverse of base mod m. Arbitrary precision up to 300 digits.
- [`bigint-calc` · Aritmética de enteros grandes](https://bursia-utils-production.up.railway.app/tools/bigint-calc): Aritmética exacta de enteros grandes: suma, resta, multiplicación, división, potencia, comparación. EN: Exact arbitrary-precision integer arithmetic: add, subtract, multiply, divide (floor quotient and remainder), power (result ≤ 10,000 digits), compare.
- [`factorial` · Factorial](https://bursia-utils-production.up.railway.app/tools/factorial): Factorial exacto n! para 0 ≤ n ≤ 2000. EN: Exact n! for 0 ≤ n ≤ 2000 as a decimal string, with digit count.
- [`combinatorics` · Combinaciones y permutaciones](https://bursia-utils-production.up.railway.app/tools/combinatorics): Combinaciones nCr y permutaciones nPr exactas, con o sin repetición. EN: Exact nCr (combinations) and nPr (permutations), with or without repetition, for n ≤ 10,000.
- [`fibonacci` · Número de Fibonacci](https://bursia-utils-production.up.railway.app/tools/fibonacci): Número de Fibonacci exacto F(n) para n ≤ 20.000. EN: Exact n-th Fibonacci number F(n) (F(0)=0, F(1)=1) for n ≤ 20,000 using fast doubling, and optionally the first terms.
- [`radix-convert` · Cambiar base numérica](https://bursia-utils-production.up.railway.app/tools/radix-convert): Convierte enteros de cualquier tamaño entre bases 2 y 36 (acepta prefijos 0x, 0o, 0b). EN: Converts an integer of any size between bases 2-36 (accepts 0x/0o/0b prefixes, underscores and a sign), returning the result and common bases.
- [`roman-numeral` · Números romanos](https://bursia-utils-production.up.railway.app/tools/roman-numeral): Convierte enteros 1-3999 a números romanos y viceversa (forma estricta). EN: Converts integers 1-3999 to standard Roman numerals and validates/parses Roman numerals (strict subtractive form) back to integers.
- [`fraction-simplify` · Simplificar fracción](https://bursia-utils-production.up.railway.app/tools/fraction-simplify): Simplifica una fracción a su mínima expresión, con forma mixta y decimal. EN: Reduces a fraction ("6/8", "-10/4", "1 1/2" mixed, or an exact decimal "0.375") to lowest terms, with mixed-number and decimal forms.
- [`fraction-arithmetic` · Aritmética de fracciones](https://bursia-utils-production.up.railway.app/tools/fraction-arithmetic): Suma, resta, multiplica o divide dos fracciones exactas y devuelve el resultado simplificado. EN: Adds, subtracts, multiplies or divides two exact fractions (or mixed numbers/decimals) and returns the reduced result.
- [`decimal-to-fraction` · Decimal a fracción](https://bursia-utils-production.up.railway.app/tools/decimal-to-fraction): Encuentra la fracción más cercana a un decimal con denominador acotado (fracciones continuas). EN: Finds the closest fraction to a decimal with a denominator ≤ max_denominator using continued fractions (e.g. 3.14159 → 355/113).
- [`expression-evaluate` · Evaluar expresión matemática](https://bursia-utils-production.up.railway.app/tools/expression-evaluate): Evalúa una expresión matemática con un analizador propio (sin eval): operadores, funciones, constantes y variables. EN: Evaluates an arithmetic expression with its own parser (no eval): + − * / % ^ !, parentheses, implicit multiplication, functions (sqrt, sin, ln, log, min, max…), constants pi/e/tau/phi and named variables.
- [`matrix-multiply` · Multiplicar matrices](https://bursia-utils-production.up.railway.app/tools/matrix-multiply): Multiplica dos matrices (hasta 20×20). EN: Multiplies two matrices (up to 20×20); columns of A must equal rows of B.
- [`matrix-transpose` · Transponer matriz](https://bursia-utils-production.up.railway.app/tools/matrix-transpose): Transpone una matriz (filas a columnas). EN: Transposes a matrix (rows become columns), up to 20×20.
- [`matrix-determinant` · Determinante de matriz](https://bursia-utils-production.up.railway.app/tools/matrix-determinant): Determinante de una matriz cuadrada (hasta 20×20). EN: Determinant of a square matrix (up to 20×20) by LU decomposition with partial pivoting.
- [`matrix-inverse` · Inversa de matriz](https://bursia-utils-production.up.railway.app/tools/matrix-inverse): Inversa de una matriz cuadrada (hasta 20×20); falla si es singular. EN: Inverse of a square matrix (up to 20×20) by Gauss-Jordan elimination; fails for singular matrices.
- [`linear-system-solve` · Resolver sistema lineal](https://bursia-utils-production.up.railway.app/tools/linear-system-solve): Resuelve un sistema de ecuaciones lineales Ax = b (hasta 20 incógnitas). EN: Solves a square system of linear equations Ax = b (up to 20 unknowns) by Gauss-Jordan elimination with partial pivoting.
- [`quadratic-solve` · Resolver ecuación cuadrática](https://bursia-utils-production.up.railway.app/tools/quadratic-solve): Resuelve ax² + bx + c = 0 con raíces reales o complejas, discriminante y vértice. EN: Solves ax² + bx + c = 0, returning real or complex roots, the discriminant and the vertex.
- [`number-to-words-en` · Número en letras (inglés)](https://bursia-utils-production.up.railway.app/tools/number-to-words-en): Escribe un entero en palabras en inglés (cardinal u ordinal). EN: Spells an integer (|n| < 10^18) in English words, as a cardinal (one hundred twenty-three) or ordinal (one hundred twenty-third).
- [`number-format-locale` · Formatear número por país](https://bursia-utils-production.up.railway.app/tools/number-format-locale): Formatea un número según el idioma/país con Intl (decimal, porcentaje, compacto, científico). EN: Formats a number for a locale with Intl.NumberFormat: decimal, percent, compact (1.2K / 1,2 mil), scientific or engineering notation, with min/max fraction digits and grouping.
- [`significant-figures` · Redondear a cifras significativas](https://bursia-utils-production.up.railway.app/tools/significant-figures): Redondea un número a N cifras significativas, en notación normal y científica. EN: Rounds a number to N significant figures and returns it in plain and scientific notation.
- [`convert-length` · Convertir longitud](https://bursia-utils-production.up.railway.app/tools/convert-length): Convierte longitud entre unidades (m, km, cm, mm, um, nm, mi, yd, ft, in, nmi, au, ly). Sin "to" devuelve todas. EN: Converts length between units (m, km, cm, mm, um, nm, mi, yd, ft, in, nmi, au, ly). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-mass` · Convertir masa](https://bursia-utils-production.up.railway.app/tools/convert-mass): Convierte masa entre unidades (kg, g, mg, ug, t, lb, oz, st, short_ton, long_ton, ct, libra_co, arroba_co). Sin "to" devuelve todas. EN: Converts mass between units (kg, g, mg, ug, t, lb, oz, st, short_ton, long_ton, ct, libra_co, arroba_co). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-volume` · Convertir volumen](https://bursia-utils-production.up.railway.app/tools/convert-volume): Convierte volumen entre unidades (l, ml, cl, dl, m3, cm3, gal, qt, pt, cup, fl_oz, tbsp, tsp, imp_gal, imp_pt, imp_fl_oz, bbl, ft3, in3). Sin "to" devuelve todas. EN: Converts volume between units (l, ml, cl, dl, m3, cm3, gal, qt, pt, cup, fl_oz, tbsp, tsp, imp_gal, imp_pt, imp_fl_oz, bbl, ft3, in3). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-area` · Convertir área](https://bursia-utils-production.up.railway.app/tools/convert-area): Convierte área entre unidades (m2, km2, cm2, mm2, ha, acre, ft2, in2, yd2, mi2, fanegada). Sin "to" devuelve todas. EN: Converts area between units (m2, km2, cm2, mm2, ha, acre, ft2, in2, yd2, mi2, fanegada). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-speed` · Convertir velocidad](https://bursia-utils-production.up.railway.app/tools/convert-speed): Convierte velocidad entre unidades (m/s, km/h, mph, kn, ft/s). Sin "to" devuelve todas. EN: Converts speed between units (m/s, km/h, mph, kn, ft/s). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-pressure` · Convertir presión](https://bursia-utils-production.up.railway.app/tools/convert-pressure): Convierte presión entre unidades (Pa, hPa, kPa, MPa, bar, mbar, atm, psi, mmHg, inHg, torr). Sin "to" devuelve todas. EN: Converts pressure between units (Pa, hPa, kPa, MPa, bar, mbar, atm, psi, mmHg, inHg, torr). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-energy` · Convertir energía](https://bursia-utils-production.up.railway.app/tools/convert-energy): Convierte energía entre unidades (J, kJ, MJ, cal, kcal, Wh, kWh, MWh, BTU, eV, therm, ft_lbf). Sin "to" devuelve todas. EN: Converts energy between units (J, kJ, MJ, cal, kcal, Wh, kWh, MWh, BTU, eV, therm, ft_lbf). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-power` · Convertir potencia](https://bursia-utils-production.up.railway.app/tools/convert-power): Convierte potencia entre unidades (W, kW, MW, GW, hp, PS, BTU/h, kcal/h). Sin "to" devuelve todas. EN: Converts power between units (W, kW, MW, GW, hp, PS, BTU/h, kcal/h). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-data-size` · Convertir tamaño de datos](https://bursia-utils-production.up.railway.app/tools/convert-data-size): Convierte tamaño de datos entre unidades (bit, B, kB, MB, GB, TB, PB, KiB, MiB, GiB, TiB, PiB, kbit, Mbit, Gbit). Sin "to" devuelve todas. EN: Converts data size between units (bit, B, kB, MB, GB, TB, PB, KiB, MiB, GiB, TiB, PiB, kbit, Mbit, Gbit). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-time` · Convertir unidades de tiempo](https://bursia-utils-production.up.railway.app/tools/convert-time): Convierte tiempo entre unidades (ns, us, ms, s, min, h, d, wk, month, yr, decade, century). Sin "to" devuelve todas. EN: Converts time between units (ns, us, ms, s, min, h, d, wk, month, yr, decade, century). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-angle` · Convertir ángulo](https://bursia-utils-production.up.railway.app/tools/convert-angle): Convierte ángulo entre unidades (rad, deg, grad, turn, arcmin, arcsec, mrad). Sin "to" devuelve todas. EN: Converts angle between units (rad, deg, grad, turn, arcmin, arcsec, mrad). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-frequency` · Convertir frecuencia](https://bursia-utils-production.up.railway.app/tools/convert-frequency): Convierte frecuencia entre unidades (Hz, kHz, MHz, GHz, rpm, bpm). Sin "to" devuelve todas. EN: Converts frequency between units (Hz, kHz, MHz, GHz, rpm, bpm). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-force` · Convertir fuerza](https://bursia-utils-production.up.railway.app/tools/convert-force): Convierte fuerza entre unidades (N, kN, lbf, kgf, dyn). Sin "to" devuelve todas. EN: Converts force between units (N, kN, lbf, kgf, dyn). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-density` · Convertir densidad](https://bursia-utils-production.up.railway.app/tools/convert-density): Convierte densidad entre unidades (kg/m3, g/cm3, g/ml, g/l, kg/l, lb/ft3, lb/gal). Sin "to" devuelve todas. EN: Converts density between units (kg/m3, g/cm3, g/ml, g/l, kg/l, lb/ft3, lb/gal). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-acceleration` · Convertir aceleración](https://bursia-utils-production.up.railway.app/tools/convert-acceleration): Convierte aceleración entre unidades (m/s2, g, ft/s2, gal). Sin "to" devuelve todas. EN: Converts acceleration between units (m/s2, g, ft/s2, gal). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-flow-rate` · Convertir caudal](https://bursia-utils-production.up.railway.app/tools/convert-flow-rate): Convierte caudal entre unidades (m3/s, m3/h, l/s, l/min, l/h, gal/min, ft3/min). Sin "to" devuelve todas. EN: Converts flow rate between units (m3/s, m3/h, l/s, l/min, l/h, gal/min, ft3/min). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-torque` · Convertir par de torsión](https://bursia-utils-production.up.railway.app/tools/convert-torque): Convierte par de torsión entre unidades (N·m, kN·m, lbf·ft, lbf·in, kgf·m). Sin "to" devuelve todas. EN: Converts torque between units (N·m, kN·m, lbf·ft, lbf·in, kgf·m). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-data-rate` · Convertir velocidad de datos](https://bursia-utils-production.up.railway.app/tools/convert-data-rate): Convierte tasa de datos entre unidades (bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s). Sin "to" devuelve todas. EN: Converts data rate between units (bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s). Omit "to" to get every unit. Exact definitional factors; results to 12 significant digits.
- [`convert-temperature` · Convertir temperatura](https://bursia-utils-production.up.railway.app/tools/convert-temperature): Convierte temperaturas entre Celsius, Fahrenheit, Kelvin y Rankine; rechaza valores bajo el cero absoluto. EN: Converts temperatures between Celsius, Fahrenheit, Kelvin and Rankine (affine conversion). Rejects values below absolute zero.
- [`convert-fuel-economy` · Convertir consumo de combustible](https://bursia-utils-production.up.railway.app/tools/convert-fuel-economy): Convierte rendimiento de combustible entre km/L, L/100 km y mpg (EE. UU. e imperial). EN: Converts fuel economy between km/L, L/100 km, US mpg and imperial mpg (inverse relationship for L/100 km).
- [`convert-cooking` · Medidas de cocina](https://bursia-utils-production.up.railway.app/tools/convert-cooking): Convierte medidas de cocina entre volumen (taza, cucharada…) y peso (g, oz…) para ingredientes comunes, con densidades típicas. Resultados aproximados. EN: Converts kitchen measures between volume (cup, tbsp, tsp, ml, l, fl_oz, metric cup) and weight (g, kg, oz, lb) for common ingredients using typical densities. Results are approximate.
- [`stats-forecast` · Pronóstico por suavizado exponencial](https://bursia-utils-production.up.railway.app/tools/stats-forecast): Pronostica una serie numérica con suavizado exponencial simple, Holt (tendencia) o Holt-Winters aditivo (tendencia + estacionalidad). Los parámetros se dan o se eligen con una búsqueda en rejilla determinista que minimiza el SSE. Devuelve pronóstico, ajuste y MAE/RMSE/MAPE. EN: Forecasts a numeric series with simple exponential smoothing, Holt (trend) or additive Holt-Winters (trend + season). Smoothing parameters are given or chosen by a deterministic grid search minimizing SSE. Returns forecasts, fitted values and MAE/RMSE/MAPE.

## Procesamiento de texto / Text processing (/mcp/texto, 53)

- [`case-camel` · Convertir a camelCase](https://bursia-utils-production.up.railway.app/tools/case-camel): Convierte texto o un identificador a camelCase, separando palabras por espacios, signos y mayúsculas. EN: Converts text or an identifier to camelCase, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved.
- [`case-pascal` · Convertir a PascalCase](https://bursia-utils-production.up.railway.app/tools/case-pascal): Convierte texto o un identificador a PascalCase, separando palabras por espacios, signos y mayúsculas. EN: Converts text or an identifier to PascalCase, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved.
- [`case-snake` · Convertir a snake_case](https://bursia-utils-production.up.railway.app/tools/case-snake): Convierte texto o un identificador a snake_case, separando palabras por espacios, signos y mayúsculas. EN: Converts text or an identifier to snake_case, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved.
- [`case-kebab` · Convertir a kebab-case](https://bursia-utils-production.up.railway.app/tools/case-kebab): Convierte texto o un identificador a kebab-case, separando palabras por espacios, signos y mayúsculas. EN: Converts text or an identifier to kebab-case, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved.
- [`case-constant` · Convertir a CONSTANT_CASE](https://bursia-utils-production.up.railway.app/tools/case-constant): Convierte texto o un identificador a CONSTANT_CASE, separando palabras por espacios, signos y mayúsculas. EN: Converts text or an identifier to CONSTANT_CASE, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved.
- [`case-dot` · Convertir a dot.case](https://bursia-utils-production.up.railway.app/tools/case-dot): Convierte texto o un identificador a dot.case, separando palabras por espacios, signos y mayúsculas. EN: Converts text or an identifier to dot.case, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved.
- [`case-train` · Convertir a Train-Case](https://bursia-utils-production.up.railway.app/tools/case-train): Convierte texto o un identificador a Train-Case, separando palabras por espacios, signos y mayúsculas. EN: Converts text or an identifier to Train-Case, splitting words on spaces, punctuation and camelCase/acronym boundaries. Unicode letters are preserved.
- [`case-title` · Convertir a Tipo Título](https://bursia-utils-production.up.railway.app/tools/case-title): Convierte a formato de título; con lang en/es mantiene en minúscula palabras cortas (de, la, y…). EN: Capitalizes words as a title. With lang en or es, short function words (of, the / de, la, y…) stay lowercase except at the start; lang none capitalizes every word.
- [`case-sentence` · Convertir a tipo oración](https://bursia-utils-production.up.railway.app/tools/case-sentence): Pone en minúscula y capitaliza la primera letra de cada oración (también tras ¿ y ¡). EN: Lowercases text and capitalizes the first letter of each sentence (after . ! ? and Spanish ¿ ¡).
- [`case-swap` · Invertir mayúsculas y minúsculas](https://bursia-utils-production.up.railway.app/tools/case-swap): Invierte mayúsculas y minúsculas de cada letra. EN: Inverts the case of every letter (upper↔lower), Unicode-aware.
- [`case-detect` · Detectar estilo de identificador](https://bursia-utils-production.up.railway.app/tools/case-detect): Detecta la convención de nombre de un identificador (camel, snake, kebab…). EN: Detects the naming convention of an identifier: camel, pascal, snake, constant, kebab, train, dot, lower, upper, title, or mixed.
- [`text-slug` · Crear slug](https://bursia-utils-production.up.railway.app/tools/text-slug): Genera un slug para URL: quita tildes, pasa a minúsculas y reemplaza símbolos por un separador. EN: Makes a URL slug: transliterates accents and common ligatures to ASCII, lowercases, replaces non-alphanumerics with a separator, and trims to a max length at a word boundary.
- [`text-metrics` · Estadísticas de texto](https://bursia-utils-production.up.railway.app/tools/text-metrics): Cuenta caracteres, bytes, palabras, oraciones, líneas y párrafos, y estima el tiempo de lectura. EN: Counts characters (code points and graphemes), bytes, words, sentences, lines and paragraphs, using Unicode segmentation, plus an estimated reading time at 238 words per minute.
- [`text-truncate` · Recortar texto](https://bursia-utils-production.up.railway.app/tools/text-truncate): Acorta texto a un máximo de caracteres (grafemas) o palabras, con puntos suspensivos. EN: Shortens text to a maximum number of graphemes or words, optionally at a word boundary, appending an ellipsis that counts toward the limit.
- [`text-wrap` · Ajustar líneas de texto](https://bursia-utils-production.up.railway.app/tools/text-wrap): Ajusta texto a un ancho máximo de línea respetando saltos existentes. EN: Wraps text to a maximum line width (in graphemes) at spaces, keeping existing line breaks; words longer than the width are split only if break_long_words is true.
- [`text-dedent` · Quitar sangría común](https://bursia-utils-production.up.railway.app/tools/text-dedent): Elimina la sangría común de todas las líneas no vacías. EN: Removes the common leading whitespace from every non-blank line (like Python textwrap.dedent); tabs and spaces are not mixed.
- [`text-indent` · Agregar sangría](https://bursia-utils-production.up.railway.app/tools/text-indent): Antepone un prefijo a cada línea (o solo a las no vacías). EN: Prefixes every line (or only non-blank lines) with a given string, e.g. spaces, tabs or "> ".
- [`text-normalize-whitespace` · Normalizar espacios](https://bursia-utils-production.up.railway.app/tools/text-normalize-whitespace): Colapsa espacios, recorta líneas, normaliza saltos de línea y espacios Unicode. EN: Collapses runs of spaces/tabs, trims each line, normalizes CRLF/CR to LF, converts non-breaking and other Unicode spaces to ASCII space and limits consecutive blank lines.
- [`unicode-normalize` · Normalizar Unicode](https://bursia-utils-production.up.railway.app/tools/unicode-normalize): Aplica normalización Unicode NFC, NFD, NFKC o NFKD. EN: Applies Unicode normalization form NFC, NFD, NFKC or NFKD and reports whether the text changed.
- [`remove-accents` · Quitar tildes y diacríticos](https://bursia-utils-production.up.railway.app/tools/remove-accents): Quita tildes y diacríticos (á→a, ü→u); opcionalmente conserva la ñ. EN: Strips combining diacritical marks (á→a, ü→u, ç→c, ñ→n) after NFD decomposition; optionally keeps ñ/Ñ for Spanish.
- [`text-reverse` · Invertir texto](https://bursia-utils-production.up.railway.app/tools/text-reverse): Invierte el texto por grafemas, sin romper emojis ni tildes. EN: Reverses text by grapheme clusters so emoji, flags and accented letters stay intact.
- [`text-pad` · Rellenar texto](https://bursia-utils-production.up.railway.app/tools/text-pad): Rellena texto hasta un ancho dado a la izquierda, derecha o ambos lados. EN: Pads text to a target width in graphemes on the left, right or both sides with a fill string.
- [`count-occurrences` · Contar apariciones](https://bursia-utils-production.up.railway.app/tools/count-occurrences): Cuenta apariciones de una subcadena y devuelve sus posiciones. EN: Counts non-overlapping (or overlapping) occurrences of a substring, optionally case-insensitive, and returns their indices (first 1,000).
- [`char-frequency` · Frecuencia de caracteres](https://bursia-utils-production.up.railway.app/tools/char-frequency): Cuenta la frecuencia de cada carácter. EN: Counts how often each grapheme appears, sorted by frequency then by first appearance; optional case folding and whitespace exclusion.
- [`word-frequency` · Frecuencia de palabras](https://bursia-utils-production.up.railway.app/tools/word-frequency): Cuenta la frecuencia de palabras, con opción de excluir palabras vacías en inglés o español. EN: Counts word frequencies using Unicode word segmentation, case-folded, with optional minimum word length and English/Spanish stopword removal.
- [`ngrams` · N-gramas](https://bursia-utils-production.up.railway.app/tools/ngrams): Genera n-gramas de caracteres o palabras con sus conteos. EN: Produces character or word n-grams (n = 1-10) with counts, sorted by frequency. Useful for keyword or similarity features.
- [`lorem-ipsum` · Texto de relleno lorem ipsum](https://bursia-utils-production.up.railway.app/tools/lorem-ipsum): Genera texto de relleno lorem ipsum determinista. EN: Generates deterministic lorem ipsum placeholder text: a number of words, sentences or paragraphs, always starting with "Lorem ipsum dolor sit amet".
- [`levenshtein-distance` · Distancia de Levenshtein](https://bursia-utils-production.up.railway.app/tools/levenshtein-distance): Distancia de edición de Levenshtein entre dos cadenas y similitud normalizada. EN: Edit distance (insertions, deletions, substitutions) between two strings by code point, plus a normalized similarity 1 - d/max(len). Length product capped at 4M.
- [`damerau-levenshtein` · Distancia de Damerau-Levenshtein](https://bursia-utils-production.up.railway.app/tools/damerau-levenshtein): Distancia OSA (Levenshtein con transposiciones), útil para errores de tipeo. EN: Optimal string alignment distance: Levenshtein plus transposition of adjacent characters, useful for typo matching.
- [`jaro-winkler` · Similitud Jaro-Winkler](https://bursia-utils-production.up.railway.app/tools/jaro-winkler): Similitud Jaro y Jaro-Winkler (0-1), útil para nombres cortos. EN: Jaro and Jaro-Winkler similarity (0-1) with prefix scale 0.1 and up to 4 prefix characters; good for short strings like names.
- [`hamming-distance` · Distancia de Hamming](https://bursia-utils-production.up.railway.app/tools/hamming-distance): Cuenta posiciones distintas entre dos cadenas de igual longitud (o bits en hex). EN: Counts positions where two equal-length strings (by code point) or hex byte strings (bit level) differ.
- [`longest-common-subsequence` · Subsecuencia común más larga](https://bursia-utils-production.up.railway.app/tools/longest-common-subsequence): Encuentra la subsecuencia común más larga de dos cadenas. EN: Finds the longest common subsequence of two strings (by code point) and its length. Length product capped at 4M.
- [`dice-similarity` · Similitud de Sørensen-Dice](https://bursia-utils-production.up.railway.app/tools/dice-similarity): Coeficiente de Sørensen-Dice sobre bigramas de caracteres (0-1). EN: Sørensen-Dice coefficient over character bigrams (0-1); robust for fuzzy matching of phrases and titles.
- [`soundex` · Código Soundex](https://bursia-utils-production.up.railway.app/tools/soundex): Código fonético Soundex (americano) de cada palabra, para nombres que suenan igual en inglés. EN: American Soundex phonetic code (letter + 3 digits, with H/W rule) for each word, for matching names that sound alike in English.
- [`diff-lines` · Diferencias por línea](https://bursia-utils-production.up.railway.app/tools/diff-lines): Diferencias por líneas entre dos textos en formato unificado, con conteo de líneas añadidas y eliminadas. EN: Line-based diff of two texts using longest common subsequence; returns a unified diff with configurable context and counts of added/removed lines. Changed-region product capped at 4M lines².
- [`regex-test` · Probar expresión regular](https://bursia-utils-production.up.railway.app/tools/regex-test): Aplica una expresión regular de JavaScript a un texto y lista cada coincidencia con posición y grupos (hasta 500). Corre en un contexto vm que se detiene a los 50 ms: un patrón catastrófico responde timeout. EN: Tries a JavaScript regex on a text and lists each match with its position and groups (up to 500). The pattern runs in a separate vm context that is stopped after 50 ms, so a catastrophic pattern returns timeout instead of hanging. Pattern ≤ 500 chars.
- [`regex-replace` · Reemplazar con expresión regular](https://bursia-utils-production.up.railway.app/tools/regex-replace): Reemplaza coincidencias de una expresión regular ($1, $<nombre>) en un contexto vm con límite de 50 ms y resultado máx. de 1.000.000 caracteres. EN: Replaces regex matches ($1, $<name>, $&, $` and $' supported) in a vm context with a 50 ms limit and a 1,000,000-character result cap. Without the g flag only the first match is replaced.
- [`regex-escape` · Escapar expresión regular](https://bursia-utils-production.up.railway.app/tools/regex-escape): Escapa una cadena literal para usarla dentro de una expresión regular. EN: Escapes a literal string so it can be embedded in a regular expression and match itself exactly.
- [`extract-emails` · Extraer correos electrónicos](https://bursia-utils-production.up.railway.app/tools/extract-emails): Extrae direcciones de correo de un texto (solo sintaxis; no verifica que existan). EN: Finds email-like addresses in text (syntax only; does not check that mailboxes exist), lowercasing the domain part. Uses a linear-time scanner around each @.
- [`extract-urls` · Extraer URLs](https://bursia-utils-production.up.railway.app/tools/extract-urls): Extrae URLs http(s) y www. de un texto, quitando la puntuación final. EN: Finds http(s) and www. URLs in text, trimming trailing punctuation and unbalanced closing parentheses.
- [`extract-hashtags` · Extraer hashtags](https://bursia-utils-production.up.railway.app/tools/extract-hashtags): Extrae #hashtags de un texto. EN: Finds #hashtags (Unicode letters, digits, underscore) in text.
- [`extract-mentions` · Extraer @menciones](https://bursia-utils-production.up.railway.app/tools/extract-mentions): Extrae @menciones que no forman parte de un correo. EN: Finds @mentions (letters, digits, underscore, dot; 1-50 chars) that are not part of an email address.
- [`extract-emojis` · Extraer emojis](https://bursia-utils-production.up.railway.app/tools/extract-emojis): Extrae emojis (incluye tonos de piel y secuencias ZWJ) de un texto. EN: Finds emoji grapheme clusters (including skin tones, ZWJ sequences and flags) in text.
- [`extract-numbers` · Extraer números](https://bursia-utils-production.up.railway.app/tools/extract-numbers): Extrae números de un texto, entendiendo separadores de miles y decimales en estilo en (1,234.5) o es (1.234,5). EN: Finds numbers in text, handling signs, decimals, exponents and thousands separators in en (1,234.5) or es/co (1.234,5) style, and returns them as numbers.
- [`readability-score` · Métricas de legibilidad](https://bursia-utils-production.up.railway.app/tools/readability-score): Métricas de legibilidad: LIX y RIX (independientes del idioma) y Flesch (en) o Fernández-Huerta (es) estimados. EN: Language-agnostic LIX and RIX scores plus estimated Flesch Reading Ease (en) or Fernández-Huerta (es) using heuristic syllable counts; also sentence and word length averages.
- [`text-invisible-scan` · Buscar caracteres invisibles](https://bursia-utils-production.up.railway.app/tools/text-invisible-scan): Detecta caracteres invisibles (ancho cero, control bidi, etiquetas Unicode) que pueden ocultar instrucciones, y decodifica el texto oculto. EN: Finds zero-width, bidi-control, Unicode tag and other invisible characters (often used to hide instructions in text) and decodes any hidden tag-character text.
- [`text-invisible-strip` · Quitar caracteres invisibles](https://bursia-utils-production.up.railway.app/tools/text-invisible-strip): Elimina caracteres invisibles; opcionalmente conserva ZWJ y selectores de variación para no romper emojis. EN: Removes zero-width, bidi-control, Unicode tag and other invisible format characters; optionally keeps ZWJ (U+200D) and variation selectors so emoji sequences survive.
- [`mixed-script-detect` · Detectar mezcla de alfabetos](https://bursia-utils-production.up.railway.app/tools/mixed-script-detect): Señala palabras que mezclan alfabetos (p. ej. latino y cirílico), típico de suplantación con homoglifos. EN: Flags words that mix letters from different scripts (e.g. Latin with Cyrillic or Greek look-alikes), a common homoglyph-spoofing sign, and lists scripts used.
- [`lines-sort` · Ordenar líneas](https://bursia-utils-production.up.railway.app/tools/lines-sort): Ordena líneas con intercalación por idioma (orden numérico natural opcional). EN: Sorts lines with locale-aware collation (natural numeric order optional), ascending or descending, optionally case-insensitive and unique.
- [`lines-dedupe` · Quitar líneas duplicadas](https://bursia-utils-production.up.railway.app/tools/lines-dedupe): Elimina líneas duplicadas conservando la primera aparición y el orden. EN: Removes duplicate lines keeping the first occurrence and original order; optional case-insensitive and whitespace-trimmed comparison.
- [`lines-number` · Numerar líneas](https://bursia-utils-production.up.railway.app/tools/lines-number): Numera cada línea, alineando a la derecha. EN: Prefixes each line with its line number, right-aligned, starting at a given number and with a chosen separator.
- [`lines-filter` · Filtrar líneas](https://bursia-utils-production.up.railway.app/tools/lines-filter): Conserva (o elimina) líneas que contienen una subcadena. EN: Keeps (or removes) lines containing a substring, case-insensitive optional. Plain substring match only; use regex-test for patterns.
- [`text-split-pick` · Dividir texto y tomar una parte](https://bursia-utils-production.up.railway.app/tools/text-split-pick): Divide un texto por un delimitador (texto literal, salto de línea o tabulador) y devuelve todas las partes, la primera, la última o la n-ésima, con recorte y descarte de vacías opcionales. EN: Splits text on a delimiter (literal text, or newline / tab) and returns all parts, the first, the last or the n-th (1-based; negative counts from the end), optionally trimming parts and dropping empty ones.

## Dígitos de control e identificadores globales / Check digits and global identifiers (/mcp/validacion, 20)

- [`phone-parse` · Analizar teléfono de LatAm, EE. UU. o España](https://bursia-utils-production.up.railway.app/tools/phone-parse): Analiza un teléfono de CO, MX, BR, AR, CL, PE, EC, EE. UU. o España: país, tipo cuando el plan lo indica (móvil, fijo, gratuito…), E.164 y formatos nacional e internacional. Solo sintaxis. EN: Parses a phone number of Colombia, Mexico, Brazil, Argentina, Chile, Peru, Ecuador, the US (NANP) or Spain into country, type when the numbering plan tells it (mobile, fixed, toll-free…), E.164 and national and international formats. Syntax only; it does not check the line exists.
- [`luhn-validate` · Validar Luhn (módulo 10)](https://bursia-utils-production.up.railway.app/tools/luhn-validate): Valida un número con el algoritmo de Luhn (mod 10): tarjetas, IMEI y varios documentos. EN: Validates a number with the Luhn mod-10 checksum (credit cards, IMEI, many national IDs); spaces and dashes are ignored.
- [`card-brand-detect` · Detectar marca de tarjeta](https://bursia-utils-production.up.railway.app/tools/card-brand-detect): Detecta la franquicia de una tarjeta por su prefijo, valida longitud y Luhn y devuelve el número enmascarado. No guarda nada ni prueba que la tarjeta exista. EN: Detects a payment card brand from its IIN prefix (Visa, Mastercard, Amex, Diners, Discover, JCB, UnionPay, Maestro, Elo, Hipercard, Mir), checks length and Luhn, and returns only a masked number. Nothing is stored; this does not prove the card exists.
- [`iban-validate` · Validar IBAN](https://bursia-utils-production.up.railway.app/tools/iban-validate): Valida un IBAN: país, longitud por país, caracteres y checksum mod 97 (ISO 7064); devuelve formatos y BBAN. EN: Validates an IBAN: country code, country-specific length (about 80 countries), allowed characters and ISO 7064 mod-97 checksum; returns electronic and print formats and the BBAN.
- [`isbn-validate` · Validar ISBN](https://bursia-utils-production.up.railway.app/tools/isbn-validate): Valida un ISBN-10 (mod 11) o ISBN-13 (prefijo 978/979) y devuelve ambas formas cuando es posible. EN: Validates an ISBN-10 (mod 11, X allowed) or ISBN-13 (EAN mod 10, 978/979 prefix) and returns both forms when convertible.
- [`issn-validate` · Validar ISSN](https://bursia-utils-production.up.railway.app/tools/issn-validate): Valida un ISSN (8 caracteres, dígito de control mod 11) de publicaciones seriadas. EN: Validates an ISSN (8 characters, mod-11 check digit with X) for serial publications.
- [`gtin-validate` · Validar EAN/UPC/GTIN](https://bursia-utils-production.up.railway.app/tools/gtin-validate): Valida códigos de barras EAN-8, UPC-A, EAN-13 y GTIN-14 (dígito GS1) e identifica tipo y prefijo (p. ej. 770 = Colombia). EN: Validates GTIN-8 (EAN-8), GTIN-12 (UPC-A), GTIN-13 (EAN-13) and GTIN-14 barcodes with the GS1 mod-10 check digit and identifies the type and GS1 prefix hints (e.g. 770 = Colombia).
- [`gtin-check-digit` · Dígito de control GS1](https://bursia-utils-production.up.railway.app/tools/gtin-check-digit): Calcula el dígito de control GS1 (mod 10) para un GTIN/EAN/UPC/SSCC. EN: Computes the GS1 mod-10 check digit for a GTIN/EAN/UPC/SSCC body of 7-17 digits and returns the full code.
- [`imei-validate` · Validar IMEI](https://bursia-utils-production.up.railway.app/tools/imei-validate): Valida un IMEI de 15 dígitos (Luhn) y lo separa en TAC y número de serie. EN: Validates a 15-digit mobile device IMEI with its Luhn check digit and splits it into TAC (type allocation code) and serial number. Validation only; it never computes check digits.
- [`vin-validate` · Validar VIN de vehículo](https://bursia-utils-production.up.railway.app/tools/vin-validate): Valida un VIN de 17 caracteres: caracteres, dígito de control (posición 9, Norteamérica), WMI, año y región. EN: Validates a 17-character VIN: allowed characters (no I, O, Q), the North American check digit (position 9), and decodes WMI, model year code and region. Non-North-American VINs may not use the check digit.
- [`aba-routing-validate` · Validar número ABA (EE. UU.)](https://bursia-utils-production.up.railway.app/tools/aba-routing-validate): Valida un número de ruta ABA de EE. UU. (9 dígitos, checksum 3-7-1). EN: Validates a 9-digit US ABA routing transit number with the 3-7-1 weighted checksum and reports the Federal Reserve district from the first two digits.
- [`swift-bic-validate` · Validar SWIFT/BIC](https://bursia-utils-production.up.railway.app/tools/swift-bic-validate): Verifica la sintaxis de un código SWIFT/BIC (ISO 9362) y lo separa en partes; no confirma que el banco exista. EN: Checks SWIFT/BIC code syntax (ISO 9362: 4-letter institution, 2-letter country, 2-char location, optional 3-char branch) and splits it into parts. Does not confirm the bank exists.
- [`isin-validate` · Validar ISIN](https://bursia-utils-production.up.railway.app/tools/isin-validate): Valida un ISIN (ISO 6166) de 12 caracteres: prefijo de país, NSIN y dígito Luhn. EN: Validates a 12-character International Securities Identification Number (ISO 6166): country prefix, NSIN and Luhn check digit over the letter-expanded code.
- [`cusip-validate` · Validar CUSIP](https://bursia-utils-production.up.railway.app/tools/cusip-validate): Valida un CUSIP de 9 caracteres con su dígito de control. EN: Validates a 9-character CUSIP (US/Canada security identifier) with its modulus-10 double-add-double check digit.
- [`lei-validate` · Validar LEI](https://bursia-utils-production.up.railway.app/tools/lei-validate): Valida un LEI (ISO 17442) de 20 caracteres con checksum mod 97-10. EN: Validates a 20-character Legal Entity Identifier (ISO 17442) with the ISO 7064 mod 97-10 checksum and splits out the LOU prefix.
- [`verhoeff` · Dígito de control Verhoeff](https://bursia-utils-production.up.railway.app/tools/verhoeff): Valida un número con el dígito de control Verhoeff (el último dígito). Solo valida. EN: Validates a digit string with the Verhoeff dihedral-group checksum (catches all single errors and adjacent transpositions; used by India's Aadhaar); the last digit is the check digit. Validation only.
- [`damm` · Dígito de control Damm](https://bursia-utils-production.up.railway.app/tools/damm): Valida un número con el dígito de control Damm (el último dígito). Solo valida. EN: Validates a digit string with the Damm quasigroup checksum (detects all single-digit errors and adjacent transpositions); the last digit is the check digit. Validation only.
- [`evm-address-checksum` · Checksum de dirección EVM (EIP-55)](https://bursia-utils-production.up.railway.app/tools/evm-address-checksum): Valida una dirección EVM (Ethereum, Base, Polygon…): formato y checksum EIP-55; devuelve la forma con checksum. EN: Validates an Ethereum/EVM address (Base, Polygon, etc.): 20-byte hex format and EIP-55 mixed-case checksum, and returns the checksummed form. Does not check balances or ownership.
- [`bitcoin-address-validate` · Validar dirección Bitcoin](https://bursia-utils-production.up.railway.app/tools/bitcoin-address-validate): Valida una dirección Bitcoin sin conexión: Base58Check (P2PKH/P2SH) o Bech32/Bech32m (SegWit). Solo sintaxis y checksum. EN: Validates a Bitcoin address offline: Base58Check P2PKH/P2SH (mainnet/testnet version bytes) or Bech32/Bech32m SegWit (BIP-173/350 witness version and program length rules). Syntax and checksum only.
- [`solana-address-validate` · Validar dirección Solana](https://bursia-utils-production.up.railway.app/tools/solana-address-validate): Verifica que una cadena sea una clave pública Solana válida en sintaxis: Base58 que decodifica a 32 bytes. EN: Checks that a string is a syntactically valid Solana public key: Base58 (Bitcoin alphabet) decoding to exactly 32 bytes. Cannot tell whether it is on-curve, funded or owned.

## Matemática geoespacial / Geospatial math (/mcp/geo, 29)

- [`geo-haversine` · Distancia ortodrómica (haversine)](https://bursia-utils-production.up.railway.app/tools/geo-haversine): Distancia ortodrómica entre dos puntos (fórmula haversine, Tierra esférica), en m, km, mi, nmi o ft. EN: Great-circle distance between two lat/lon points on a spherical Earth (mean radius 6,371.0088 km), in m, km, mi, nmi or ft. Error up to about 0.5% versus the ellipsoid.
- [`geo-vincenty` · Distancia elipsoidal (Vincenty)](https://bursia-utils-production.up.railway.app/tools/geo-vincenty): Distancia geodésica sobre el elipsoide WGS84 (fórmula inversa de Vincenty) con rumbos inicial y final. EN: Geodesic distance and initial/final bearings between two points on the WGS84 ellipsoid using Vincenty's inverse formula (millimetre accuracy); reports non-convergence for near-antipodal points.
- [`geo-bearing` · Rumbo entre dos puntos](https://bursia-utils-production.up.railway.app/tools/geo-bearing): Rumbo inicial y final (grados desde el norte) entre dos puntos, con etiqueta de brújula. EN: Initial and final great-circle bearings (degrees clockwise from true north) from one point to another, with 16-point compass labels.
- [`geo-destination` · Destino desde distancia y rumbo](https://bursia-utils-production.up.railway.app/tools/geo-destination): Calcula el punto de llegada al recorrer una distancia con un rumbo inicial desde un punto. EN: Computes the point reached by travelling a distance along a great circle from a start point on an initial bearing.
- [`geo-midpoint` · Punto medio geográfico](https://bursia-utils-production.up.railway.app/tools/geo-midpoint): Punto medio sobre el círculo máximo entre dos puntos, o centro geográfico de varios puntos. EN: Midpoint along the great circle between two points, or the geographic center (mean of 3-D vectors) of up to 10,000 points.
- [`geo-bounding-box` · Caja delimitadora alrededor de un punto](https://bursia-utils-production.up.railway.app/tools/geo-bounding-box): Caja delimitadora que encierra un círculo de radio dado alrededor de un punto, útil para filtros "a menos de N km". EN: Bounding box (min/max latitude and longitude) enclosing a circle of a given radius around a point, e.g. for "within N km" pre-filters; handles poles and the antimeridian.
- [`geo-point-in-polygon` · Punto dentro de polígono](https://bursia-utils-production.up.railway.app/tools/geo-point-in-polygon): Verifica si un punto está dentro de un polígono (con huecos opcionales), p. ej. zonas de entrega. EN: Tests whether a point lies inside a polygon (ray casting on lon/lat, planar approximation; holes supported via additional rings), e.g. for delivery zones.
- [`geo-polygon-area` · Área y perímetro de polígono](https://bursia-utils-production.up.railway.app/tools/geo-polygon-area): Área (exceso esférico) y perímetro de un polígono lon/lat, en m², km², hectáreas y acres. EN: Area (spherical excess on the mean-radius sphere) and perimeter of a lon/lat polygon ring, in m², km², hectares and acres.
- [`geo-path-length` · Longitud de un recorrido](https://bursia-utils-production.up.railway.app/tools/geo-path-length): Longitud total de una ruta por varios puntos y distancia por tramo. EN: Total great-circle length of a path through up to 100,000 points, with per-segment distances (first 1,000).
- [`geo-nearest` · Puntos más cercanos](https://bursia-utils-production.up.railway.app/tools/geo-nearest): Ordena puntos candidatos por distancia desde un origen y devuelve los k más cercanos. EN: Ranks up to 10,000 candidate points by great-circle distance from an origin and returns the k nearest with their distances and original indices.
- [`geohash-encode` · Codificar geohash](https://bursia-utils-production.up.railway.app/tools/geohash-encode): Codifica latitud/longitud como geohash de precisión 1-12 e informa el tamaño de la celda. EN: Encodes a latitude/longitude as a geohash string of precision 1-12 and reports the cell size in metres.
- [`geohash-decode` · Decodificar geohash](https://bursia-utils-production.up.railway.app/tools/geohash-decode): Decodifica un geohash en su punto central, caja delimitadora y margen de error. EN: Decodes a geohash to its center point, bounding box and error margins.
- [`geohash-neighbors` · Vecinos de un geohash](https://bursia-utils-production.up.railway.app/tools/geohash-neighbors): Devuelve las 8 celdas geohash vecinas de la misma precisión, para búsquedas por cercanía. EN: Returns the 8 neighboring geohash cells (n, ne, e, se, s, sw, w, nw) of the same precision, for proximity searches.
- [`coordinates-to-decimal` · Coordenadas GMS a decimales](https://bursia-utils-production.up.railway.app/tools/coordinates-to-decimal): Convierte coordenadas en GMS (4°38'8"N), grados y minutos decimales o decimales con hemisferio (N/S/E/W/O) a grados decimales. EN: Parses latitude/longitude written as DMS (4°38'8"N), degrees-decimal-minutes (4°38.13'N), decimal with hemisphere letters (N/S/E/W, O for oeste) or signs, into signed decimal degrees.
- [`coordinates-to-dms` · Coordenadas decimales a GMS](https://bursia-utils-production.up.railway.app/tools/coordinates-to-dms): Formatea latitud/longitud decimal como grados, minutos y segundos (y grados con minutos decimales). EN: Formats decimal latitude/longitude as degrees-minutes-seconds with hemisphere letters, and as degrees-decimal-minutes.
- [`utm-from-latlon` · Latitud/longitud a UTM](https://bursia-utils-production.up.railway.app/tools/utm-from-latlon): Convierte latitud/longitud WGS84 a coordenadas UTM (zona, banda, este y norte). EN: Converts WGS84 latitude/longitude to UTM zone, latitude band, hemisphere, easting and northing (Krüger series, sub-millimetre in-zone), including the Norway/Svalbard zone exceptions.
- [`utm-to-latlon` · UTM a latitud/longitud](https://bursia-utils-production.up.railway.app/tools/utm-to-latlon): Convierte coordenadas UTM (zona, hemisferio o banda, este, norte) a latitud/longitud WGS84. EN: Converts UTM zone, hemisphere (or latitude band letter), easting and northing to WGS84 latitude/longitude.
- [`polyline-encode` · Codificar polilínea](https://bursia-utils-production.up.railway.app/tools/polyline-encode): Codifica una lista de puntos con el algoritmo Encoded Polyline (precisión 5 o 6). EN: Encodes a list of lat/lon points with the Encoded Polyline Algorithm (precision 5 by default, 6 for OSRM/Valhalla).
- [`polyline-decode` · Decodificar polilínea](https://bursia-utils-production.up.railway.app/tools/polyline-decode): Decodifica una cadena Encoded Polyline en puntos lat/lon. EN: Decodes an Encoded Polyline string (precision 5 or 6) into lat/lon points.
- [`plus-code-encode` · Codificar plus code](https://bursia-utils-production.up.railway.app/tools/plus-code-encode): Codifica latitud/longitud como Plus Code (Open Location Code) global, útil para direcciones sin numeración. EN: Encodes a latitude/longitude as a global Open Location Code ("plus code") of length 10 (≈14 m) to 15, as used by Google Maps for addresses without street numbers.
- [`plus-code-decode` · Decodificar plus code](https://bursia-utils-production.up.railway.app/tools/plus-code-decode): Decodifica un Plus Code completo en su centro y caja delimitadora; rechaza códigos cortos. EN: Decodes a full Open Location Code (plus code) into its center latitude/longitude and bounding box. Short codes need a reference location and are rejected.
- [`map-tile` · Tesela de mapa (XYZ)](https://bursia-utils-production.up.railway.app/tools/map-tile): Convierte lat/lon y zoom a coordenadas de tesela XYZ (Web Mercator) y quadkey, o una tesela a su caja. EN: Converts lat/lon and zoom (0-24) to Web Mercator XYZ tile coordinates and quadkey, or a tile back to its bounding box.
- [`geojson-bbox` · Caja y centroide de GeoJSON](https://bursia-utils-production.up.railway.app/tools/geojson-bbox): Calcula la caja delimitadora, número de vértices y centroide de cualquier geometría GeoJSON. EN: Computes the bounding box [minLon, minLat, maxLon, maxLat], vertex count and vertex centroid of any GeoJSON geometry, Feature or FeatureCollection, validating coordinate ranges.
- [`country-info` · Datos de un país (capital, moneda, idiomas)](https://bursia-utils-production.up.railway.app/tools/country-info): Devuelve los datos de un país buscado por código ISO 3166-1 o por nombre en español o inglés (sin importar tildes): nombres, capital, monedas ISO 4217, idiomas, prefijos telefónicos, zonas horarias IANA y continente, con su fuente. EN: Returns the facts of one country found by ISO 3166-1 code or by name in English or Spanish (accent-insensitive): names, capital, ISO 4217 currencies, languages, international calling codes, IANA time zones and continent, from embedded open data with its source.
- [`country-population` · Población de un país (Banco Mundial)](https://bursia-utils-production.up.railway.app/tools/country-population): Devuelve la población total de un país (indicador SP.POP.TOTL del Banco Mundial, último año de los datos incluidos, CC BY 4.0) con el año y la fuente; el país se busca por código ISO 3166-1 o por nombre en español o inglés. EN: Returns the total population of a country (World Bank indicator SP.POP.TOTL, latest year in the embedded data, CC BY 4.0) with the year and source; the country is found by ISO 3166-1 code or by name in English or Spanish.
- [`city-lookup` · Buscar ciudad (país, coordenadas, zona)](https://bursia-utils-production.up.railway.app/tools/city-lookup): Busca ciudades de 100.000 habitantes o más por nombre (sin importar tildes, con nombres en español para las grandes) con filtro opcional de país, y devuelve país, población, coordenadas, zona horaria IANA e ID de GeoNames. EN: Finds cities of 100,000 or more inhabitants by name (accent-insensitive, Spanish exonyms for large cities) with an optional country filter, and returns country, population, coordinates, IANA time zone and GeoNames ID, most populous first, flagging homonyms.
- [`city-distance` · Distancia entre dos ciudades](https://bursia-utils-production.up.railway.app/tools/city-distance): Calcula la distancia ortodrómica (km, millas, millas náuticas) y el rumbo inicial entre dos ciudades dadas por nombre, eligiendo la coincidencia más poblada de la lista GeoNames incluida (o dentro de un país dado). EN: Computes the great-circle distance (km, miles, nautical miles) and initial bearing between two cities given by name, resolving each to its most populous match in the embedded GeoNames list (or within a given country) and reporting other matches.
- [`university-search` · Buscar universidad por nombre o país](https://bursia-utils-production.up.railway.app/tools/university-search): Busca en una lista pública de unas 10.000 universidades por palabras del nombre (sin importar tildes, deben coincidir todas) y/o por país, y devuelve nombre, país, dominios web y páginas, con el total de coincidencias. EN: Searches a public list of about 10,000 universities by name words (accent-insensitive, all words must match) and/or country, returning name, country, web domains and web pages, with the total number of matches.
- [`university-email-domain` · ¿El correo es de una universidad?](https://bursia-utils-production.up.railway.app/tools/university-email-domain): Comprueba si el dominio de un correo (o un dominio suelto), o uno de sus dominios padre, figura en una lista pública de dominios universitarios y nombra las universidades; solo revisa el dominio, no el buzón ni la persona. EN: Checks whether the domain of an email address (or a bare domain) or one of its parent domains appears in a public list of university web domains and names the matching universities; checks the domain only, not the mailbox or the person.

## Color y accesibilidad / Color and accessibility (/mcp/color, 12)

- [`color-convert` · Convertir formatos de color](https://bursia-utils-production.up.railway.app/tools/color-convert): Convierte colores CSS (hex, rgb, hsl, hwb, oklch, oklab, nombres) a hex, RGB, HSL, HSV, CMYK, OKLab, OKLCH y CIELAB. EN: Parses any common CSS color (hex 3/4/6/8, rgb(), hsl(), hwb(), oklch(), oklab(), 148 named colors) and returns hex, RGB, HSL, HSV, CMYK (naive), OKLab, OKLCH and CIELAB (D65). Out-of-gamut OKLCH is chroma-reduced into sRGB.
- [`color-contrast` · Contraste WCAG](https://bursia-utils-production.up.railway.app/tools/color-contrast): Relación de contraste WCAG 2.x entre dos colores, con resultados AA/AAA para texto normal, grande y componentes. EN: WCAG 2.x contrast ratio between foreground and background colors (alpha composited over the background) with AA/AAA pass/fail for normal text, large text and UI components.
- [`color-contrast-fix` · Ajustar color para cumplir contraste](https://bursia-utils-production.up.railway.app/tools/color-contrast-fix): Encuentra el color más cercano (variando solo la luminosidad OKLCH) que alcanza un contraste WCAG objetivo contra un fondo. EN: Finds the closest color to a foreground (changing only OKLCH lightness, keeping hue) that reaches a target WCAG contrast ratio against a background, trying darker and lighter directions.
- [`color-mix` · Mezclar dos colores](https://bursia-utils-production.up.railway.app/tools/color-mix): Mezcla dos colores con un peso (como color-mix de CSS) en OKLab, sRGB lineal o sRGB. EN: Mixes two colors by a weight (like CSS color-mix) in OKLab (perceptual, default), linear sRGB or gamma sRGB space.
- [`color-adjust` · Aclarar, oscurecer o saturar color](https://bursia-utils-production.up.railway.app/tools/color-adjust): Ajusta un color en OKLCH: luminosidad, croma (saturación) y tono, o transparencia. EN: Adjusts a color in OKLCH: change lightness, chroma (saturation) and hue by deltas, or set alpha; results are mapped back into the sRGB gamut.
- [`color-palette` · Paleta de armonía de color](https://bursia-utils-production.up.railway.app/tools/color-palette): Genera paletas armónicas desde un color base: complementaria, análoga, triádica, complementaria dividida, tetrádica o monocromática. EN: Generates harmony palettes from a base color by rotating OKLCH hue: complementary, analogous, triadic, split-complementary, tetradic (square) or monochromatic (lightness steps).
- [`color-scale` · Escala de tintes y sombras](https://bursia-utils-production.up.railway.app/tools/color-scale): Crea una rampa de colores entre dos colores o una escala 50-950 tipo sistema de diseño a partir de un color de marca. EN: Builds an evenly spaced color ramp between two colors in OKLab (n steps), or a 50-950 design-system scale from one brand color by varying OKLCH lightness at constant hue.
- [`color-blindness-simulate` · Simular daltonismo](https://bursia-utils-production.up.railway.app/tools/color-blindness-simulate): Simula cómo se ve un color con protanopía, deuteranopía, tritanopía o acromatopsia. EN: Simulates how a color appears with protanopia, deuteranopia, tritanopia (Machado et al. 2009, severity 1) or achromatopsia, to check palettes for color-blind users.
- [`color-delta-e` · Diferencia de color (ΔE 2000)](https://bursia-utils-production.up.railway.app/tools/color-delta-e): Diferencia perceptual entre dos colores: ΔE CIEDE2000 y ΔE OKLab, con interpretación. EN: Perceptual difference between two colors: CIEDE2000 ΔE (CIELAB D65) and Euclidean OKLab ΔE, with a plain-language interpretation (< 1 imperceptible … > 10 very different).
- [`color-name-nearest` · Nombre CSS de color más cercano](https://bursia-utils-production.up.railway.app/tools/color-name-nearest): Encuentra el nombre de color CSS más cercano a un color dado (distancia OKLab). EN: Finds the closest of the 148 CSS named colors to a given color (by OKLab distance), with the distance, and whether it is an exact match.
- [`color-temperature` · Temperatura de color a RGB](https://bursia-utils-production.up.railway.app/tools/color-temperature): Aproxima el color sRGB de una fuente de luz a una temperatura de 1.000 K a 40.000 K. EN: Approximates the sRGB color of a black-body light source at a temperature from 1,000 K to 40,000 K (Tanner Helland fit), e.g. 2700 K warm white or 6500 K daylight.
- [`color-luminance` · Luminancia relativa](https://bursia-utils-production.up.railway.app/tools/color-luminance): Devuelve la luminancia relativa WCAG, si el color es claro u oscuro y si conviene texto negro o blanco encima. EN: Returns WCAG relative luminance, OKLCH lightness, whether the color reads as light or dark, and whether black or white text has more contrast on it.

## Optional

- [llms.txt](https://bursia-utils-production.up.railway.app/llms.txt): índice corto / short index
