{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_p94wz435bzq2","handle":"burs-ia-utils","url":"https://wellknown.network/agents/burs-ia-utils","links":{"self":"https://wellknown.network/agents/burs-ia-utils/record.json","html":"https://wellknown.network/agents/burs-ia-utils","markdown":"https://wellknown.network/agents/burs-ia-utils/record.md","api":"https://wellknown.network/api/v1/agents/burs-ia-utils","status":"https://wellknown.network/api/v1/agents/burs-ia-utils/status","claim":"https://wellknown.network/agents/burs-ia-utils/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/burs-ia-utils/claim.json","badge":"https://wellknown.network/agents/burs-ia-utils/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/burs-ia-utils/history","tools":"https://wellknown.network/api/v1/agents/burs-ia-utils/tools"},"ard":{"identifier":"urn:air:bursia-utils-production.up.railway.app:server:burs-ia-utils","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Burs-IA Utils","summary":"502 utilidades deterministas gratis y sin llave para agentes: NIT, festivos, IVA, CUFE, aeropuertos","description":"502 utilidades deterministas gratis y sin llave para agentes: NIT, festivos, IVA, CUFE, aeropuertos","publisher":{"name":"soyeladice-svg","url":null},"homepage":"https://utils.burs-ia.com/puerta","repository":null,"version":"1.8.2","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://bursia-utils-production.up.railway.app/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"https://utils.burs-ia.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"https://utils.burs-ia.com/mcp/esencial","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"https://utils.burs-ia.com/mcp/puerta","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-11-04T20:17:55.076235Z","publishedAt":"2026-11-04T20:17:55.076235Z","registryName":"io.github.soyeladice-svg/bursia-utils"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"data.vector-search","name":"Vector Search","confidence":1,"provenance":"derived"},{"slug":"ai.prompting","name":"Prompt Management","confidence":1,"provenance":"derived"},{"slug":"productivity.tasks","name":"Tasks & To-do","confidence":0.948,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.525,"provenance":"derived"},{"slug":"documents.conversion","name":"Document Conversion","confidence":0.51,"provenance":"derived"}],"categories":["ai","commerce","data","documents","productivity"],"language":"es"},"observed":{"status":"live","statusReason":"Responded 1h ago.","lastOkAt":"2026-11-08T17:25:46.776Z","lastProbedAt":"2026-11-08T17:25:46.776Z","statusComputedAt":"2026-11-08T17:29:05.365Z","reliability30d":{"probes":47,"successRate":1,"p50Ms":172,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":47,"ok":47,"authBoundaryOk":0,"serviceOk":47,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-11-08T17:25:46.776Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":178,"error":null,"detail":{"tools":[{"name":"find_tool","description":"Busca entre las 502 herramientas de este servidor por palabras clave (español o inglés) y una familia opcional, y devuelve las mejores coincidencias con sus esq"},{"name":"token-estimate","description":"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. Cuándo: un flujo de age"},{"name":"prompt-template-fill","description":"Rellena marcadores {{variable}} de una plantilla con valores, informando faltantes y no usados; sin ejecutar código. Cuándo: un flujo de agente necesita un resu"},{"name":"json-repair","description":"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"},{"name":"json-extract","description":"Encuentra y analiza objetos/arreglos JSON dentro de un texto libre (p. ej. respuesta de un LLM), con reparación opcional. Cuándo: un flujo de agente necesita un"},{"name":"code-blocks-extract","description":"Extrae bloques de código delimitados (``` o ~~~) de Markdown o respuestas de LLM, con su lenguaje. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rag-chunk","description":"Divide un texto en fragmentos de hasta N caracteres o tokens estimados con solapamiento, respetando párrafos, oraciones y palabras. Cuándo: un flujo de agente n"},{"name":"dedupe-similar","description":"Agrupa textos casi duplicados (similitud Jaccard de trigramas ≥ umbral) entre hasta 2.000 elementos y conserva el primero. Cuándo: un flujo de agente necesita u"},{"name":"vector-similarity","description":"Calcula la similitud coseno, producto punto y distancias euclidiana y Manhattan entre dos vectores. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"vector-top-k","description":"Ordena hasta 2.000 vectores por similitud coseno con un vector consulta y devuelve los k mejores. Cuándo: un flujo de agente necesita un resultado exacto y repe"},{"name":"bm25-rank","description":"Ordena hasta 2.000 documentos para una consulta con BM25 (sin embeddings), con palabras sin tildes. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"backoff-schedule","description":"Calcula los tiempos de espera entre reintentos (exponencial, lineal o constante) con tope y jitter opcional. Cuándo: un flujo de agente necesita un resultado ex"},{"name":"retry-after-parse","description":"Interpreta Retry-After (segundos o fecha HTTP) en segundos de espera y hora absoluta de reintento. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rate-limit-plan","description":"Calcula, para un límite de N solicitudes por ventana, el espaciado mínimo, la duración total mínima y la espera del próximo llamado. Cuándo: un flujo de agente "},{"name":"idempotency-key","description":"Deriva una clave de idempotencia determinista de una solicitud (método, URL, cuerpo JSON canónico), para reutilizarla en reintentos. Cuándo: un flujo de agente "},{"name":"token-units-convert","description":"Convierte montos de tokens entre decimal y unidades base enteras de forma exacta (USDC 6 decimales, ETH 18…), como en x402. Cuándo: un flujo de agente necesita "},{"name":"x402-cost-estimate","description":"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. Cuándo"},{"name":"llm-cost-estimate","description":"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. Cuándo: un flujo de"},{"name":"text-redact-pii","description":"Enmascara datos personales y secretos en un texto: correos, teléfonos, tarjetas (Luhn), IBAN, IP, JWT, claves API y claves privadas. Basado en patrones. Cuándo:"},{"name":"tool-definition-convert","description":"Convierte una definición de herramienta entre los formatos MCP, OpenAI (function calling) y Anthropic (tool use). Cuándo: hay que leer, convertir o revisar una "},{"name":"color-convert","description":"Convierte colores CSS (hex, rgb, hsl, hwb, oklch, oklab, nombres) a hex, RGB, HSL, HSV, CMYK, OKLab, OKLCH y CIELAB. Cuándo: hay que calcular con exactitud colo"},{"name":"color-contrast","description":"Calcula la relación de contraste WCAG 2.x entre dos colores, con resultados AA/AAA para texto normal, grande y componentes. Cuándo: hay que calcular con exactit"},{"name":"color-contrast-fix","description":"Encuentra el color más cercano (variando solo la luminosidad OKLCH) que alcanza un contraste WCAG objetivo contra un fondo. Cuándo: hay que calcular con exactit"},{"name":"color-mix","description":"Mezcla dos colores con un peso (como color-mix de CSS) en OKLab, sRGB lineal o sRGB. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-adjust","description":"Ajusta un color en OKLCH: luminosidad, croma (saturación) y tono, o transparencia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. "},{"name":"color-palette","description":"Genera paletas armónicas desde un color base: complementaria, análoga, triádica, complementaria dividida, tetrádica o monocromática. Cuándo: hay que calcular co"},{"name":"color-scale","description":"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. Cuándo: hay que calcular con exactitud col"},{"name":"color-blindness-simulate","description":"Simula cómo se ve un color con protanopía, deuteranopía, tritanopía o acromatopsia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej."},{"name":"color-delta-e","description":"Calcula la diferencia perceptual entre dos colores: ΔE CIEDE2000 y ΔE OKLab, con interpretación. Cuándo: hay que calcular con exactitud colores, contrastes o pa"},{"name":"color-name-nearest","description":"Encuentra el nombre de color CSS más cercano a un color dado (distancia OKLab). Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. par"},{"name":"color-temperature","description":"Aproxima el color sRGB de una fuente de luz a una temperatura de 1.000 K a 40.000 K. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-luminance","description":"Devuelve la luminancia relativa WCAG, si el color es claro u oscuro y si conviene texto negro o blanco encima. Cuándo: hay que calcular con exactitud colores, c"},{"name":"json-parse-check","description":"Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructur"},{"name":"json-pretty","description":"Formatea JSON con sangría de 2/4 espacios o tabulador, con opción de ordenar claves. Cuándo: hay que transformar, comparar o revisar con exactitud datos estruct"},{"name":"json-minify","description":"Minifica JSON eliminando espacios; informa tamaños antes y después. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-sort-keys","description":"Ordena recursivamente las claves de los objetos JSON sin cambiar el orden de los arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud datos e"},{"name":"json-canonicalize","description":"Serializa JSON en forma canónica RFC 8785 (JCS) y devuelve su SHA-256. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, "},{"name":"json-pointer-get","description":"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 fal"},{"name":"json-path","description":"Evalúa una consulta JSONPath (subconjunto de RFC 9535, con filtros) y devuelve valores y rutas. Cuándo: hay que transformar, comparar o revisar con exactitud da"},{"name":"json-patch-apply","description":"Aplica un JSON Patch (RFC 6902) de forma atómica; si una operación falla, no se aplica nada. Cuándo: hay que transformar, comparar o revisar con exactitud datos"},{"name":"json-diff-patch","description":"Calcula un JSON Patch (RFC 6902) que transforma el documento a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CS"},{"name":"json-merge-patch-apply","description":"Aplica un JSON Merge Patch (RFC 7386): objetos se fusionan, null elimina, lo demás reemplaza. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-merge-patch-create","description":"Genera el JSON Merge Patch (RFC 7386) que convierte a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, "},{"name":"json-flatten-paths","description":"Aplana objetos y arreglos anidados en un nivel con claves con puntos (a.b.0.c). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurado"},{"name":"json-unflatten","description":"Reconstruye JSON anidado a partir de claves con puntos; los índices numéricos crean arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-pick","description":"Devuelve un objeto con solo las rutas indicadas (p. ej. user.name). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-omit","description":"Elimina las claves indicadas de un objeto; con deep=true en todos los niveles. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados"},{"name":"json-describe","description":"Resume la estructura de un JSON: profundidad, conteos por tipo, tamaño y rutas distintas. Cuándo: hay que transformar, comparar o revisar con exactitud datos es"},{"name":"json-schema-validate","description":"Valida un JSON contra un JSON Schema (subconjunto propio, sin $ref); informa palabras clave no soportadas. Cuándo: hay que transformar, comparar o revisar con e"},{"name":"json-schema-from-samples","description":"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 pr"}],"toolCount":50,"toolsHash":"b794ef7aab66c9befca1d7fb50569a372807df636c1d1e1a6babe8a03ddbd132","serverName":"bursia-utils","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}},{"at":"2026-11-08T16:28:16.156Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":178,"error":null,"detail":{"tools":[{"name":"buscar","description":"Busca entre las 502 herramientas de Burs-IA Utils por palabras clave (español o inglés) y un grupo opcional, y devuelve el nombre canónico, el título en español"},{"name":"usar","description":"Ejecuta una de las 502 herramientas de Burs-IA Utils por su nombre canónico o alias, con sus argumentos. El resultado es idéntico byte a byte al de llamarla dir"}],"toolCount":2,"toolsHash":"2d6a07368a35c7982beda86ca07250486aa2d3c7552d7701e19af2a77942bbc3","serverName":"bursia-utils-puerta","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}},{"at":"2026-11-08T11:23:45.291Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":181,"error":null,"detail":{"tools":[{"name":"find_tool","description":"Busca entre las 502 herramientas de este servidor por palabras clave (español o inglés) y una familia opcional, y devuelve las mejores coincidencias con sus esq"},{"name":"token-estimate","description":"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. Cuándo: un flujo de age"},{"name":"prompt-template-fill","description":"Rellena marcadores {{variable}} de una plantilla con valores, informando faltantes y no usados; sin ejecutar código. Cuándo: un flujo de agente necesita un resu"},{"name":"json-repair","description":"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"},{"name":"json-extract","description":"Encuentra y analiza objetos/arreglos JSON dentro de un texto libre (p. ej. respuesta de un LLM), con reparación opcional. Cuándo: un flujo de agente necesita un"},{"name":"code-blocks-extract","description":"Extrae bloques de código delimitados (``` o ~~~) de Markdown o respuestas de LLM, con su lenguaje. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rag-chunk","description":"Divide un texto en fragmentos de hasta N caracteres o tokens estimados con solapamiento, respetando párrafos, oraciones y palabras. Cuándo: un flujo de agente n"},{"name":"dedupe-similar","description":"Agrupa textos casi duplicados (similitud Jaccard de trigramas ≥ umbral) entre hasta 2.000 elementos y conserva el primero. Cuándo: un flujo de agente necesita u"},{"name":"vector-similarity","description":"Calcula la similitud coseno, producto punto y distancias euclidiana y Manhattan entre dos vectores. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"vector-top-k","description":"Ordena hasta 2.000 vectores por similitud coseno con un vector consulta y devuelve los k mejores. Cuándo: un flujo de agente necesita un resultado exacto y repe"},{"name":"bm25-rank","description":"Ordena hasta 2.000 documentos para una consulta con BM25 (sin embeddings), con palabras sin tildes. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"backoff-schedule","description":"Calcula los tiempos de espera entre reintentos (exponencial, lineal o constante) con tope y jitter opcional. Cuándo: un flujo de agente necesita un resultado ex"},{"name":"retry-after-parse","description":"Interpreta Retry-After (segundos o fecha HTTP) en segundos de espera y hora absoluta de reintento. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rate-limit-plan","description":"Calcula, para un límite de N solicitudes por ventana, el espaciado mínimo, la duración total mínima y la espera del próximo llamado. Cuándo: un flujo de agente "},{"name":"idempotency-key","description":"Deriva una clave de idempotencia determinista de una solicitud (método, URL, cuerpo JSON canónico), para reutilizarla en reintentos. Cuándo: un flujo de agente "},{"name":"token-units-convert","description":"Convierte montos de tokens entre decimal y unidades base enteras de forma exacta (USDC 6 decimales, ETH 18…), como en x402. Cuándo: un flujo de agente necesita "},{"name":"x402-cost-estimate","description":"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. Cuándo"},{"name":"llm-cost-estimate","description":"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. Cuándo: un flujo de"},{"name":"text-redact-pii","description":"Enmascara datos personales y secretos en un texto: correos, teléfonos, tarjetas (Luhn), IBAN, IP, JWT, claves API y claves privadas. Basado en patrones. Cuándo:"},{"name":"tool-definition-convert","description":"Convierte una definición de herramienta entre los formatos MCP, OpenAI (function calling) y Anthropic (tool use). Cuándo: hay que leer, convertir o revisar una "},{"name":"color-convert","description":"Convierte colores CSS (hex, rgb, hsl, hwb, oklch, oklab, nombres) a hex, RGB, HSL, HSV, CMYK, OKLab, OKLCH y CIELAB. Cuándo: hay que calcular con exactitud colo"},{"name":"color-contrast","description":"Calcula la relación de contraste WCAG 2.x entre dos colores, con resultados AA/AAA para texto normal, grande y componentes. Cuándo: hay que calcular con exactit"},{"name":"color-contrast-fix","description":"Encuentra el color más cercano (variando solo la luminosidad OKLCH) que alcanza un contraste WCAG objetivo contra un fondo. Cuándo: hay que calcular con exactit"},{"name":"color-mix","description":"Mezcla dos colores con un peso (como color-mix de CSS) en OKLab, sRGB lineal o sRGB. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-adjust","description":"Ajusta un color en OKLCH: luminosidad, croma (saturación) y tono, o transparencia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. "},{"name":"color-palette","description":"Genera paletas armónicas desde un color base: complementaria, análoga, triádica, complementaria dividida, tetrádica o monocromática. Cuándo: hay que calcular co"},{"name":"color-scale","description":"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. Cuándo: hay que calcular con exactitud col"},{"name":"color-blindness-simulate","description":"Simula cómo se ve un color con protanopía, deuteranopía, tritanopía o acromatopsia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej."},{"name":"color-delta-e","description":"Calcula la diferencia perceptual entre dos colores: ΔE CIEDE2000 y ΔE OKLab, con interpretación. Cuándo: hay que calcular con exactitud colores, contrastes o pa"},{"name":"color-name-nearest","description":"Encuentra el nombre de color CSS más cercano a un color dado (distancia OKLab). Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. par"},{"name":"color-temperature","description":"Aproxima el color sRGB de una fuente de luz a una temperatura de 1.000 K a 40.000 K. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-luminance","description":"Devuelve la luminancia relativa WCAG, si el color es claro u oscuro y si conviene texto negro o blanco encima. Cuándo: hay que calcular con exactitud colores, c"},{"name":"json-parse-check","description":"Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructur"},{"name":"json-pretty","description":"Formatea JSON con sangría de 2/4 espacios o tabulador, con opción de ordenar claves. Cuándo: hay que transformar, comparar o revisar con exactitud datos estruct"},{"name":"json-minify","description":"Minifica JSON eliminando espacios; informa tamaños antes y después. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-sort-keys","description":"Ordena recursivamente las claves de los objetos JSON sin cambiar el orden de los arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud datos e"},{"name":"json-canonicalize","description":"Serializa JSON en forma canónica RFC 8785 (JCS) y devuelve su SHA-256. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, "},{"name":"json-pointer-get","description":"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 fal"},{"name":"json-path","description":"Evalúa una consulta JSONPath (subconjunto de RFC 9535, con filtros) y devuelve valores y rutas. Cuándo: hay que transformar, comparar o revisar con exactitud da"},{"name":"json-patch-apply","description":"Aplica un JSON Patch (RFC 6902) de forma atómica; si una operación falla, no se aplica nada. Cuándo: hay que transformar, comparar o revisar con exactitud datos"},{"name":"json-diff-patch","description":"Calcula un JSON Patch (RFC 6902) que transforma el documento a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CS"},{"name":"json-merge-patch-apply","description":"Aplica un JSON Merge Patch (RFC 7386): objetos se fusionan, null elimina, lo demás reemplaza. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-merge-patch-create","description":"Genera el JSON Merge Patch (RFC 7386) que convierte a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, "},{"name":"json-flatten-paths","description":"Aplana objetos y arreglos anidados en un nivel con claves con puntos (a.b.0.c). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurado"},{"name":"json-unflatten","description":"Reconstruye JSON anidado a partir de claves con puntos; los índices numéricos crean arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-pick","description":"Devuelve un objeto con solo las rutas indicadas (p. ej. user.name). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-omit","description":"Elimina las claves indicadas de un objeto; con deep=true en todos los niveles. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados"},{"name":"json-describe","description":"Resume la estructura de un JSON: profundidad, conteos por tipo, tamaño y rutas distintas. Cuándo: hay que transformar, comparar o revisar con exactitud datos es"},{"name":"json-schema-validate","description":"Valida un JSON contra un JSON Schema (subconjunto propio, sin $ref); informa palabras clave no soportadas. Cuándo: hay que transformar, comparar o revisar con e"},{"name":"json-schema-from-samples","description":"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 pr"}],"toolCount":50,"toolsHash":"b794ef7aab66c9befca1d7fb50569a372807df636c1d1e1a6babe8a03ddbd132","serverName":"bursia-utils","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}},{"at":"2026-11-08T10:26:29.172Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":154,"error":null,"detail":{"tools":[{"name":"co-nit","description":"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 "},{"name":"co-cedula-format","description":"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. Cuándo: hay que aplicar con exact"},{"name":"mx-rfc-validate","description":"Valida un RFC mexicano (SAT): 13 caracteres persona física o 12 moral, fecha y dígito verificador mod 11. Cuándo: hay que comprobar sin conexión un documento o "},{"name":"mx-curp-validate","description":"Valida una CURP mexicana (18 caracteres): estructura, fecha de nacimiento, sexo, entidad y dígito verificador RENAPO. Cuándo: hay que comprobar sin conexión un "},{"name":"br-cpf-validate","description":"Valida un CPF brasileño (11 dígitos, dos dígitos verificadores) y lo formatea (529.982.247-25). Cuándo: hay que comprobar sin conexión un documento o número de "},{"name":"br-cnpj-validate","description":"Valida un CNPJ brasileño, incluido el formato alfanumérico vigente desde julio de 2026, con sus dos dígitos verificadores. Cuándo: hay que comprobar sin conexió"},{"name":"ar-cuit-validate","description":"Valida un CUIT/CUIL argentino (11 dígitos, dígito verificador mod 11) e identifica el tipo de prefijo. Cuándo: hay que comprobar sin conexión un documento o núm"},{"name":"cl-rut","description":"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. Cuándo: hay que comprobar sin co"},{"name":"co-holidays","description":"Lista los 18 (hasta 2025) o 19 (desde 2026, Ley 2578 de 2026) festivos nacionales de Colombia de un año según la Ley Emiliani (traslado a lunes) y la Pascua. Cu"},{"name":"co-business-days-add","description":"Suma o resta N días hábiles a una fecha usando los festivos de Colombia (plazos legales, facturas, SLA). Cuándo: hay que aplicar con exactitud una regla colombi"},{"name":"co-business-days-between","description":"Cuenta días hábiles entre dos fechas en Colombia, excluyendo domingos, sábados (opcional) y festivos nacionales. Cuándo: hay que aplicar con exactitud una regla"},{"name":"co-iva","description":"Calcula el IVA colombiano (19 % general, 5 % reducido o 0 %): suma a una base o extrae de un total con IVA, redondeando a pesos. Cuándo: hay que aplicar con exa"},{"name":"remove-accents","description":"Quita tildes y diacríticos (á→a, ü→u); opcionalmente conserva la ñ. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. "},{"name":"qr-encode","description":"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ódulo"},{"name":"es-number-to-words","description":"Escribe un entero hasta 10^18 en palabras en español (escala larga), con género y apócope opcional (veintiún, un). Cuándo: hay que tratar texto, números o fecha"},{"name":"currency-format","description":"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. Cuándo: un cálculo de dinero, impues"},{"name":"iban-validate","description":"Valida un IBAN: país, longitud por país, caracteres y checksum mod 97 (ISO 7064); devuelve formatos y BBAN. Cuándo: hay que verificar sin conexión el formato y "},{"name":"luhn-validate","description":"Valida un número con el algoritmo de Luhn (mod 10): tarjetas, IMEI y varios documentos. Cuándo: hay que verificar sin conexión el formato y el dígito de control"},{"name":"json-parse-check","description":"Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructur"},{"name":"markdown-to-chat","description":"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 ta"},{"name":"json-repair","description":"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"},{"name":"hash-sha256","description":"Calcula el resumen SHA-256 (FIPS 180-4) en hex, base64 o base64url. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para compara"},{"name":"uuid-v4","description":"Genera UUID versión 4 (RFC 9562) aleatorios. Con semilla, la salida es reproducible. Cuándo: hay que generar un identificador en este formato o leer los campos "},{"name":"timezone-shift","description":"Convierte una fecha/hora de una zona horaria IANA a otra, considerando horario de verano. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que "},{"name":"time-now","description":"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"}],"toolCount":25,"toolsHash":"ea589565b858ec350d2da0e3817248b84a4b4ac96530598af967c929798b4ce8","serverName":"bursia-utils-esencial","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}},{"at":"2026-11-08T08:23:21.423Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":190,"error":null,"detail":{"tools":[{"name":"find_tool","description":"Busca entre las 502 herramientas de este servidor por palabras clave (español o inglés) y una familia opcional, y devuelve las mejores coincidencias con sus esq"},{"name":"token-estimate","description":"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. Cuándo: un flujo de age"},{"name":"prompt-template-fill","description":"Rellena marcadores {{variable}} de una plantilla con valores, informando faltantes y no usados; sin ejecutar código. Cuándo: un flujo de agente necesita un resu"},{"name":"json-repair","description":"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"},{"name":"json-extract","description":"Encuentra y analiza objetos/arreglos JSON dentro de un texto libre (p. ej. respuesta de un LLM), con reparación opcional. Cuándo: un flujo de agente necesita un"},{"name":"code-blocks-extract","description":"Extrae bloques de código delimitados (``` o ~~~) de Markdown o respuestas de LLM, con su lenguaje. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rag-chunk","description":"Divide un texto en fragmentos de hasta N caracteres o tokens estimados con solapamiento, respetando párrafos, oraciones y palabras. Cuándo: un flujo de agente n"},{"name":"dedupe-similar","description":"Agrupa textos casi duplicados (similitud Jaccard de trigramas ≥ umbral) entre hasta 2.000 elementos y conserva el primero. Cuándo: un flujo de agente necesita u"},{"name":"vector-similarity","description":"Calcula la similitud coseno, producto punto y distancias euclidiana y Manhattan entre dos vectores. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"vector-top-k","description":"Ordena hasta 2.000 vectores por similitud coseno con un vector consulta y devuelve los k mejores. Cuándo: un flujo de agente necesita un resultado exacto y repe"},{"name":"bm25-rank","description":"Ordena hasta 2.000 documentos para una consulta con BM25 (sin embeddings), con palabras sin tildes. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"backoff-schedule","description":"Calcula los tiempos de espera entre reintentos (exponencial, lineal o constante) con tope y jitter opcional. Cuándo: un flujo de agente necesita un resultado ex"},{"name":"retry-after-parse","description":"Interpreta Retry-After (segundos o fecha HTTP) en segundos de espera y hora absoluta de reintento. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rate-limit-plan","description":"Calcula, para un límite de N solicitudes por ventana, el espaciado mínimo, la duración total mínima y la espera del próximo llamado. Cuándo: un flujo de agente "},{"name":"idempotency-key","description":"Deriva una clave de idempotencia determinista de una solicitud (método, URL, cuerpo JSON canónico), para reutilizarla en reintentos. Cuándo: un flujo de agente "},{"name":"token-units-convert","description":"Convierte montos de tokens entre decimal y unidades base enteras de forma exacta (USDC 6 decimales, ETH 18…), como en x402. Cuándo: un flujo de agente necesita "},{"name":"x402-cost-estimate","description":"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. Cuándo"},{"name":"llm-cost-estimate","description":"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. Cuándo: un flujo de"},{"name":"text-redact-pii","description":"Enmascara datos personales y secretos en un texto: correos, teléfonos, tarjetas (Luhn), IBAN, IP, JWT, claves API y claves privadas. Basado en patrones. Cuándo:"},{"name":"tool-definition-convert","description":"Convierte una definición de herramienta entre los formatos MCP, OpenAI (function calling) y Anthropic (tool use). Cuándo: hay que leer, convertir o revisar una "},{"name":"color-convert","description":"Convierte colores CSS (hex, rgb, hsl, hwb, oklch, oklab, nombres) a hex, RGB, HSL, HSV, CMYK, OKLab, OKLCH y CIELAB. Cuándo: hay que calcular con exactitud colo"},{"name":"color-contrast","description":"Calcula la relación de contraste WCAG 2.x entre dos colores, con resultados AA/AAA para texto normal, grande y componentes. Cuándo: hay que calcular con exactit"},{"name":"color-contrast-fix","description":"Encuentra el color más cercano (variando solo la luminosidad OKLCH) que alcanza un contraste WCAG objetivo contra un fondo. Cuándo: hay que calcular con exactit"},{"name":"color-mix","description":"Mezcla dos colores con un peso (como color-mix de CSS) en OKLab, sRGB lineal o sRGB. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-adjust","description":"Ajusta un color en OKLCH: luminosidad, croma (saturación) y tono, o transparencia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. "},{"name":"color-palette","description":"Genera paletas armónicas desde un color base: complementaria, análoga, triádica, complementaria dividida, tetrádica o monocromática. Cuándo: hay que calcular co"},{"name":"color-scale","description":"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. Cuándo: hay que calcular con exactitud col"},{"name":"color-blindness-simulate","description":"Simula cómo se ve un color con protanopía, deuteranopía, tritanopía o acromatopsia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej."},{"name":"color-delta-e","description":"Calcula la diferencia perceptual entre dos colores: ΔE CIEDE2000 y ΔE OKLab, con interpretación. Cuándo: hay que calcular con exactitud colores, contrastes o pa"},{"name":"color-name-nearest","description":"Encuentra el nombre de color CSS más cercano a un color dado (distancia OKLab). Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. par"},{"name":"color-temperature","description":"Aproxima el color sRGB de una fuente de luz a una temperatura de 1.000 K a 40.000 K. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-luminance","description":"Devuelve la luminancia relativa WCAG, si el color es claro u oscuro y si conviene texto negro o blanco encima. Cuándo: hay que calcular con exactitud colores, c"},{"name":"json-parse-check","description":"Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructur"},{"name":"json-pretty","description":"Formatea JSON con sangría de 2/4 espacios o tabulador, con opción de ordenar claves. Cuándo: hay que transformar, comparar o revisar con exactitud datos estruct"},{"name":"json-minify","description":"Minifica JSON eliminando espacios; informa tamaños antes y después. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-sort-keys","description":"Ordena recursivamente las claves de los objetos JSON sin cambiar el orden de los arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud datos e"},{"name":"json-canonicalize","description":"Serializa JSON en forma canónica RFC 8785 (JCS) y devuelve su SHA-256. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, "},{"name":"json-pointer-get","description":"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 fal"},{"name":"json-path","description":"Evalúa una consulta JSONPath (subconjunto de RFC 9535, con filtros) y devuelve valores y rutas. Cuándo: hay que transformar, comparar o revisar con exactitud da"},{"name":"json-patch-apply","description":"Aplica un JSON Patch (RFC 6902) de forma atómica; si una operación falla, no se aplica nada. Cuándo: hay que transformar, comparar o revisar con exactitud datos"},{"name":"json-diff-patch","description":"Calcula un JSON Patch (RFC 6902) que transforma el documento a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CS"},{"name":"json-merge-patch-apply","description":"Aplica un JSON Merge Patch (RFC 7386): objetos se fusionan, null elimina, lo demás reemplaza. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-merge-patch-create","description":"Genera el JSON Merge Patch (RFC 7386) que convierte a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, "},{"name":"json-flatten-paths","description":"Aplana objetos y arreglos anidados en un nivel con claves con puntos (a.b.0.c). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurado"},{"name":"json-unflatten","description":"Reconstruye JSON anidado a partir de claves con puntos; los índices numéricos crean arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-pick","description":"Devuelve un objeto con solo las rutas indicadas (p. ej. user.name). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-omit","description":"Elimina las claves indicadas de un objeto; con deep=true en todos los niveles. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados"},{"name":"json-describe","description":"Resume la estructura de un JSON: profundidad, conteos por tipo, tamaño y rutas distintas. Cuándo: hay que transformar, comparar o revisar con exactitud datos es"},{"name":"json-schema-validate","description":"Valida un JSON contra un JSON Schema (subconjunto propio, sin $ref); informa palabras clave no soportadas. Cuándo: hay que transformar, comparar o revisar con e"},{"name":"json-schema-from-samples","description":"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 pr"}],"toolCount":50,"toolsHash":"b794ef7aab66c9befca1d7fb50569a372807df636c1d1e1a6babe8a03ddbd132","serverName":"bursia-utils","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}},{"at":"2026-11-08T08:23:09.691Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":363,"error":null,"detail":{"tools":[{"name":"buscar","description":"Busca entre las 502 herramientas de Burs-IA Utils por palabras clave (español o inglés) y un grupo opcional, y devuelve el nombre canónico, el título en español"},{"name":"usar","description":"Ejecuta una de las 502 herramientas de Burs-IA Utils por su nombre canónico o alias, con sus argumentos. El resultado es idéntico byte a byte al de llamarla dir"}],"toolCount":2,"toolsHash":"2d6a07368a35c7982beda86ca07250486aa2d3c7552d7701e19af2a77942bbc3","serverName":"bursia-utils-puerta","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}},{"at":"2026-11-08T02:25:33.714Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":160,"error":null,"detail":{"tools":[{"name":"co-nit","description":"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 "},{"name":"co-cedula-format","description":"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. Cuándo: hay que aplicar con exact"},{"name":"mx-rfc-validate","description":"Valida un RFC mexicano (SAT): 13 caracteres persona física o 12 moral, fecha y dígito verificador mod 11. Cuándo: hay que comprobar sin conexión un documento o "},{"name":"mx-curp-validate","description":"Valida una CURP mexicana (18 caracteres): estructura, fecha de nacimiento, sexo, entidad y dígito verificador RENAPO. Cuándo: hay que comprobar sin conexión un "},{"name":"br-cpf-validate","description":"Valida un CPF brasileño (11 dígitos, dos dígitos verificadores) y lo formatea (529.982.247-25). Cuándo: hay que comprobar sin conexión un documento o número de "},{"name":"br-cnpj-validate","description":"Valida un CNPJ brasileño, incluido el formato alfanumérico vigente desde julio de 2026, con sus dos dígitos verificadores. Cuándo: hay que comprobar sin conexió"},{"name":"ar-cuit-validate","description":"Valida un CUIT/CUIL argentino (11 dígitos, dígito verificador mod 11) e identifica el tipo de prefijo. Cuándo: hay que comprobar sin conexión un documento o núm"},{"name":"cl-rut","description":"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. Cuándo: hay que comprobar sin co"},{"name":"co-holidays","description":"Lista los 18 (hasta 2025) o 19 (desde 2026, Ley 2578 de 2026) festivos nacionales de Colombia de un año según la Ley Emiliani (traslado a lunes) y la Pascua. Cu"},{"name":"co-business-days-add","description":"Suma o resta N días hábiles a una fecha usando los festivos de Colombia (plazos legales, facturas, SLA). Cuándo: hay que aplicar con exactitud una regla colombi"},{"name":"co-business-days-between","description":"Cuenta días hábiles entre dos fechas en Colombia, excluyendo domingos, sábados (opcional) y festivos nacionales. Cuándo: hay que aplicar con exactitud una regla"},{"name":"co-iva","description":"Calcula el IVA colombiano (19 % general, 5 % reducido o 0 %): suma a una base o extrae de un total con IVA, redondeando a pesos. Cuándo: hay que aplicar con exa"},{"name":"remove-accents","description":"Quita tildes y diacríticos (á→a, ü→u); opcionalmente conserva la ñ. Cuándo: hay que transformar, comparar o medir un texto con exactitud y no por aproximación. "},{"name":"qr-encode","description":"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ódulo"},{"name":"es-number-to-words","description":"Escribe un entero hasta 10^18 en palabras en español (escala larga), con género y apócope opcional (veintiún, un). Cuándo: hay que tratar texto, números o fecha"},{"name":"currency-format","description":"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. Cuándo: un cálculo de dinero, impues"},{"name":"iban-validate","description":"Valida un IBAN: país, longitud por país, caracteres y checksum mod 97 (ISO 7064); devuelve formatos y BBAN. Cuándo: hay que verificar sin conexión el formato y "},{"name":"luhn-validate","description":"Valida un número con el algoritmo de Luhn (mod 10): tarjetas, IMEI y varios documentos. Cuándo: hay que verificar sin conexión el formato y el dígito de control"},{"name":"json-parse-check","description":"Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructur"},{"name":"markdown-to-chat","description":"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 ta"},{"name":"json-repair","description":"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"},{"name":"hash-sha256","description":"Calcula el resumen SHA-256 (FIPS 180-4) en hex, base64 o base64url. Cuándo: se necesita el resumen exacto de un texto o de unos bytes dados, p. ej. para compara"},{"name":"uuid-v4","description":"Genera UUID versión 4 (RFC 9562) aleatorios. Con semilla, la salida es reproducible. Cuándo: hay que generar un identificador en este formato o leer los campos "},{"name":"timezone-shift","description":"Convierte una fecha/hora de una zona horaria IANA a otra, considerando horario de verano. Cuándo: un resultado de fechas, zonas horarias o calendario tiene que "},{"name":"time-now","description":"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"}],"toolCount":25,"toolsHash":"ea589565b858ec350d2da0e3817248b84a4b4ac96530598af967c929798b4ce8","serverName":"bursia-utils-esencial","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}},{"at":"2026-11-08T01:29:58.245Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":181,"error":null,"detail":{"tools":[{"name":"find_tool","description":"Busca entre las 502 herramientas de este servidor por palabras clave (español o inglés) y una familia opcional, y devuelve las mejores coincidencias con sus esq"},{"name":"token-estimate","description":"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. Cuándo: un flujo de age"},{"name":"prompt-template-fill","description":"Rellena marcadores {{variable}} de una plantilla con valores, informando faltantes y no usados; sin ejecutar código. Cuándo: un flujo de agente necesita un resu"},{"name":"json-repair","description":"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"},{"name":"json-extract","description":"Encuentra y analiza objetos/arreglos JSON dentro de un texto libre (p. ej. respuesta de un LLM), con reparación opcional. Cuándo: un flujo de agente necesita un"},{"name":"code-blocks-extract","description":"Extrae bloques de código delimitados (``` o ~~~) de Markdown o respuestas de LLM, con su lenguaje. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rag-chunk","description":"Divide un texto en fragmentos de hasta N caracteres o tokens estimados con solapamiento, respetando párrafos, oraciones y palabras. Cuándo: un flujo de agente n"},{"name":"dedupe-similar","description":"Agrupa textos casi duplicados (similitud Jaccard de trigramas ≥ umbral) entre hasta 2.000 elementos y conserva el primero. Cuándo: un flujo de agente necesita u"},{"name":"vector-similarity","description":"Calcula la similitud coseno, producto punto y distancias euclidiana y Manhattan entre dos vectores. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"vector-top-k","description":"Ordena hasta 2.000 vectores por similitud coseno con un vector consulta y devuelve los k mejores. Cuándo: un flujo de agente necesita un resultado exacto y repe"},{"name":"bm25-rank","description":"Ordena hasta 2.000 documentos para una consulta con BM25 (sin embeddings), con palabras sin tildes. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"backoff-schedule","description":"Calcula los tiempos de espera entre reintentos (exponencial, lineal o constante) con tope y jitter opcional. Cuándo: un flujo de agente necesita un resultado ex"},{"name":"retry-after-parse","description":"Interpreta Retry-After (segundos o fecha HTTP) en segundos de espera y hora absoluta de reintento. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rate-limit-plan","description":"Calcula, para un límite de N solicitudes por ventana, el espaciado mínimo, la duración total mínima y la espera del próximo llamado. Cuándo: un flujo de agente "},{"name":"idempotency-key","description":"Deriva una clave de idempotencia determinista de una solicitud (método, URL, cuerpo JSON canónico), para reutilizarla en reintentos. Cuándo: un flujo de agente "},{"name":"token-units-convert","description":"Convierte montos de tokens entre decimal y unidades base enteras de forma exacta (USDC 6 decimales, ETH 18…), como en x402. Cuándo: un flujo de agente necesita "},{"name":"x402-cost-estimate","description":"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. Cuándo"},{"name":"llm-cost-estimate","description":"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. Cuándo: un flujo de"},{"name":"text-redact-pii","description":"Enmascara datos personales y secretos en un texto: correos, teléfonos, tarjetas (Luhn), IBAN, IP, JWT, claves API y claves privadas. Basado en patrones. Cuándo:"},{"name":"tool-definition-convert","description":"Convierte una definición de herramienta entre los formatos MCP, OpenAI (function calling) y Anthropic (tool use). Cuándo: hay que leer, convertir o revisar una "},{"name":"color-convert","description":"Convierte colores CSS (hex, rgb, hsl, hwb, oklch, oklab, nombres) a hex, RGB, HSL, HSV, CMYK, OKLab, OKLCH y CIELAB. Cuándo: hay que calcular con exactitud colo"},{"name":"color-contrast","description":"Calcula la relación de contraste WCAG 2.x entre dos colores, con resultados AA/AAA para texto normal, grande y componentes. Cuándo: hay que calcular con exactit"},{"name":"color-contrast-fix","description":"Encuentra el color más cercano (variando solo la luminosidad OKLCH) que alcanza un contraste WCAG objetivo contra un fondo. Cuándo: hay que calcular con exactit"},{"name":"color-mix","description":"Mezcla dos colores con un peso (como color-mix de CSS) en OKLab, sRGB lineal o sRGB. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-adjust","description":"Ajusta un color en OKLCH: luminosidad, croma (saturación) y tono, o transparencia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. "},{"name":"color-palette","description":"Genera paletas armónicas desde un color base: complementaria, análoga, triádica, complementaria dividida, tetrádica o monocromática. Cuándo: hay que calcular co"},{"name":"color-scale","description":"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. Cuándo: hay que calcular con exactitud col"},{"name":"color-blindness-simulate","description":"Simula cómo se ve un color con protanopía, deuteranopía, tritanopía o acromatopsia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej."},{"name":"color-delta-e","description":"Calcula la diferencia perceptual entre dos colores: ΔE CIEDE2000 y ΔE OKLab, con interpretación. Cuándo: hay que calcular con exactitud colores, contrastes o pa"},{"name":"color-name-nearest","description":"Encuentra el nombre de color CSS más cercano a un color dado (distancia OKLab). Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. par"},{"name":"color-temperature","description":"Aproxima el color sRGB de una fuente de luz a una temperatura de 1.000 K a 40.000 K. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-luminance","description":"Devuelve la luminancia relativa WCAG, si el color es claro u oscuro y si conviene texto negro o blanco encima. Cuándo: hay que calcular con exactitud colores, c"},{"name":"json-parse-check","description":"Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructur"},{"name":"json-pretty","description":"Formatea JSON con sangría de 2/4 espacios o tabulador, con opción de ordenar claves. Cuándo: hay que transformar, comparar o revisar con exactitud datos estruct"},{"name":"json-minify","description":"Minifica JSON eliminando espacios; informa tamaños antes y después. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-sort-keys","description":"Ordena recursivamente las claves de los objetos JSON sin cambiar el orden de los arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud datos e"},{"name":"json-canonicalize","description":"Serializa JSON en forma canónica RFC 8785 (JCS) y devuelve su SHA-256. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, "},{"name":"json-pointer-get","description":"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 fal"},{"name":"json-path","description":"Evalúa una consulta JSONPath (subconjunto de RFC 9535, con filtros) y devuelve valores y rutas. Cuándo: hay que transformar, comparar o revisar con exactitud da"},{"name":"json-patch-apply","description":"Aplica un JSON Patch (RFC 6902) de forma atómica; si una operación falla, no se aplica nada. Cuándo: hay que transformar, comparar o revisar con exactitud datos"},{"name":"json-diff-patch","description":"Calcula un JSON Patch (RFC 6902) que transforma el documento a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CS"},{"name":"json-merge-patch-apply","description":"Aplica un JSON Merge Patch (RFC 7386): objetos se fusionan, null elimina, lo demás reemplaza. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-merge-patch-create","description":"Genera el JSON Merge Patch (RFC 7386) que convierte a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, "},{"name":"json-flatten-paths","description":"Aplana objetos y arreglos anidados en un nivel con claves con puntos (a.b.0.c). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurado"},{"name":"json-unflatten","description":"Reconstruye JSON anidado a partir de claves con puntos; los índices numéricos crean arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-pick","description":"Devuelve un objeto con solo las rutas indicadas (p. ej. user.name). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-omit","description":"Elimina las claves indicadas de un objeto; con deep=true en todos los niveles. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados"},{"name":"json-describe","description":"Resume la estructura de un JSON: profundidad, conteos por tipo, tamaño y rutas distintas. Cuándo: hay que transformar, comparar o revisar con exactitud datos es"},{"name":"json-schema-validate","description":"Valida un JSON contra un JSON Schema (subconjunto propio, sin $ref); informa palabras clave no soportadas. Cuándo: hay que transformar, comparar o revisar con e"},{"name":"json-schema-from-samples","description":"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 pr"}],"toolCount":50,"toolsHash":"b794ef7aab66c9befca1d7fb50569a372807df636c1d1e1a6babe8a03ddbd132","serverName":"bursia-utils","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}},{"at":"2026-11-07T23:27:16.160Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":191,"error":null,"detail":{"tools":[{"name":"buscar","description":"Busca entre las 502 herramientas de Burs-IA Utils por palabras clave (español o inglés) y un grupo opcional, y devuelve el nombre canónico, el título en español"},{"name":"usar","description":"Ejecuta una de las 502 herramientas de Burs-IA Utils por su nombre canónico o alias, con sus argumentos. El resultado es idéntico byte a byte al de llamarla dir"}],"toolCount":2,"toolsHash":"2d6a07368a35c7982beda86ca07250486aa2d3c7552d7701e19af2a77942bbc3","serverName":"bursia-utils-puerta","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}},{"at":"2026-11-07T23:26:53.866Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":196,"error":null,"detail":{"tools":[{"name":"find_tool","description":"Busca entre las 502 herramientas de este servidor por palabras clave (español o inglés) y una familia opcional, y devuelve las mejores coincidencias con sus esq"},{"name":"token-estimate","description":"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. Cuándo: un flujo de age"},{"name":"prompt-template-fill","description":"Rellena marcadores {{variable}} de una plantilla con valores, informando faltantes y no usados; sin ejecutar código. Cuándo: un flujo de agente necesita un resu"},{"name":"json-repair","description":"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"},{"name":"json-extract","description":"Encuentra y analiza objetos/arreglos JSON dentro de un texto libre (p. ej. respuesta de un LLM), con reparación opcional. Cuándo: un flujo de agente necesita un"},{"name":"code-blocks-extract","description":"Extrae bloques de código delimitados (``` o ~~~) de Markdown o respuestas de LLM, con su lenguaje. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rag-chunk","description":"Divide un texto en fragmentos de hasta N caracteres o tokens estimados con solapamiento, respetando párrafos, oraciones y palabras. Cuándo: un flujo de agente n"},{"name":"dedupe-similar","description":"Agrupa textos casi duplicados (similitud Jaccard de trigramas ≥ umbral) entre hasta 2.000 elementos y conserva el primero. Cuándo: un flujo de agente necesita u"},{"name":"vector-similarity","description":"Calcula la similitud coseno, producto punto y distancias euclidiana y Manhattan entre dos vectores. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"vector-top-k","description":"Ordena hasta 2.000 vectores por similitud coseno con un vector consulta y devuelve los k mejores. Cuándo: un flujo de agente necesita un resultado exacto y repe"},{"name":"bm25-rank","description":"Ordena hasta 2.000 documentos para una consulta con BM25 (sin embeddings), con palabras sin tildes. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"backoff-schedule","description":"Calcula los tiempos de espera entre reintentos (exponencial, lineal o constante) con tope y jitter opcional. Cuándo: un flujo de agente necesita un resultado ex"},{"name":"retry-after-parse","description":"Interpreta Retry-After (segundos o fecha HTTP) en segundos de espera y hora absoluta de reintento. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rate-limit-plan","description":"Calcula, para un límite de N solicitudes por ventana, el espaciado mínimo, la duración total mínima y la espera del próximo llamado. Cuándo: un flujo de agente "},{"name":"idempotency-key","description":"Deriva una clave de idempotencia determinista de una solicitud (método, URL, cuerpo JSON canónico), para reutilizarla en reintentos. Cuándo: un flujo de agente "},{"name":"token-units-convert","description":"Convierte montos de tokens entre decimal y unidades base enteras de forma exacta (USDC 6 decimales, ETH 18…), como en x402. Cuándo: un flujo de agente necesita "},{"name":"x402-cost-estimate","description":"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. Cuándo"},{"name":"llm-cost-estimate","description":"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. Cuándo: un flujo de"},{"name":"text-redact-pii","description":"Enmascara datos personales y secretos en un texto: correos, teléfonos, tarjetas (Luhn), IBAN, IP, JWT, claves API y claves privadas. Basado en patrones. Cuándo:"},{"name":"tool-definition-convert","description":"Convierte una definición de herramienta entre los formatos MCP, OpenAI (function calling) y Anthropic (tool use). Cuándo: hay que leer, convertir o revisar una "},{"name":"color-convert","description":"Convierte colores CSS (hex, rgb, hsl, hwb, oklch, oklab, nombres) a hex, RGB, HSL, HSV, CMYK, OKLab, OKLCH y CIELAB. Cuándo: hay que calcular con exactitud colo"},{"name":"color-contrast","description":"Calcula la relación de contraste WCAG 2.x entre dos colores, con resultados AA/AAA para texto normal, grande y componentes. Cuándo: hay que calcular con exactit"},{"name":"color-contrast-fix","description":"Encuentra el color más cercano (variando solo la luminosidad OKLCH) que alcanza un contraste WCAG objetivo contra un fondo. Cuándo: hay que calcular con exactit"},{"name":"color-mix","description":"Mezcla dos colores con un peso (como color-mix de CSS) en OKLab, sRGB lineal o sRGB. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-adjust","description":"Ajusta un color en OKLCH: luminosidad, croma (saturación) y tono, o transparencia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. "},{"name":"color-palette","description":"Genera paletas armónicas desde un color base: complementaria, análoga, triádica, complementaria dividida, tetrádica o monocromática. Cuándo: hay que calcular co"},{"name":"color-scale","description":"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. Cuándo: hay que calcular con exactitud col"},{"name":"color-blindness-simulate","description":"Simula cómo se ve un color con protanopía, deuteranopía, tritanopía o acromatopsia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej."},{"name":"color-delta-e","description":"Calcula la diferencia perceptual entre dos colores: ΔE CIEDE2000 y ΔE OKLab, con interpretación. Cuándo: hay que calcular con exactitud colores, contrastes o pa"},{"name":"color-name-nearest","description":"Encuentra el nombre de color CSS más cercano a un color dado (distancia OKLab). Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. par"},{"name":"color-temperature","description":"Aproxima el color sRGB de una fuente de luz a una temperatura de 1.000 K a 40.000 K. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-luminance","description":"Devuelve la luminancia relativa WCAG, si el color es claro u oscuro y si conviene texto negro o blanco encima. Cuándo: hay que calcular con exactitud colores, c"},{"name":"json-parse-check","description":"Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructur"},{"name":"json-pretty","description":"Formatea JSON con sangría de 2/4 espacios o tabulador, con opción de ordenar claves. Cuándo: hay que transformar, comparar o revisar con exactitud datos estruct"},{"name":"json-minify","description":"Minifica JSON eliminando espacios; informa tamaños antes y después. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-sort-keys","description":"Ordena recursivamente las claves de los objetos JSON sin cambiar el orden de los arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud datos e"},{"name":"json-canonicalize","description":"Serializa JSON en forma canónica RFC 8785 (JCS) y devuelve su SHA-256. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, "},{"name":"json-pointer-get","description":"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 fal"},{"name":"json-path","description":"Evalúa una consulta JSONPath (subconjunto de RFC 9535, con filtros) y devuelve valores y rutas. Cuándo: hay que transformar, comparar o revisar con exactitud da"},{"name":"json-patch-apply","description":"Aplica un JSON Patch (RFC 6902) de forma atómica; si una operación falla, no se aplica nada. Cuándo: hay que transformar, comparar o revisar con exactitud datos"},{"name":"json-diff-patch","description":"Calcula un JSON Patch (RFC 6902) que transforma el documento a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CS"},{"name":"json-merge-patch-apply","description":"Aplica un JSON Merge Patch (RFC 7386): objetos se fusionan, null elimina, lo demás reemplaza. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-merge-patch-create","description":"Genera el JSON Merge Patch (RFC 7386) que convierte a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, "},{"name":"json-flatten-paths","description":"Aplana objetos y arreglos anidados en un nivel con claves con puntos (a.b.0.c). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurado"},{"name":"json-unflatten","description":"Reconstruye JSON anidado a partir de claves con puntos; los índices numéricos crean arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-pick","description":"Devuelve un objeto con solo las rutas indicadas (p. ej. user.name). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-omit","description":"Elimina las claves indicadas de un objeto; con deep=true en todos los niveles. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados"},{"name":"json-describe","description":"Resume la estructura de un JSON: profundidad, conteos por tipo, tamaño y rutas distintas. Cuándo: hay que transformar, comparar o revisar con exactitud datos es"},{"name":"json-schema-validate","description":"Valida un JSON contra un JSON Schema (subconjunto propio, sin $ref); informa palabras clave no soportadas. Cuándo: hay que transformar, comparar o revisar con e"},{"name":"json-schema-from-samples","description":"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 pr"}],"toolCount":50,"toolsHash":"b794ef7aab66c9befca1d7fb50569a372807df636c1d1e1a6babe8a03ddbd132","serverName":"bursia-utils","capabilities":["tools"],"serverVersion":"1.8.2","protocolVersion":"2025-06-18"}}],"tools":[{"name":"find_tool","description":"Busca entre las 502 herramientas de este servidor por palabras clave (español o inglés) y una familia opcional, y devuelve las mejores coincidencias con sus esq"},{"name":"token-estimate","description":"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. Cuándo: un flujo de age"},{"name":"prompt-template-fill","description":"Rellena marcadores {{variable}} de una plantilla con valores, informando faltantes y no usados; sin ejecutar código. Cuándo: un flujo de agente necesita un resu"},{"name":"json-repair","description":"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"},{"name":"json-extract","description":"Encuentra y analiza objetos/arreglos JSON dentro de un texto libre (p. ej. respuesta de un LLM), con reparación opcional. Cuándo: un flujo de agente necesita un"},{"name":"code-blocks-extract","description":"Extrae bloques de código delimitados (``` o ~~~) de Markdown o respuestas de LLM, con su lenguaje. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rag-chunk","description":"Divide un texto en fragmentos de hasta N caracteres o tokens estimados con solapamiento, respetando párrafos, oraciones y palabras. Cuándo: un flujo de agente n"},{"name":"dedupe-similar","description":"Agrupa textos casi duplicados (similitud Jaccard de trigramas ≥ umbral) entre hasta 2.000 elementos y conserva el primero. Cuándo: un flujo de agente necesita u"},{"name":"vector-similarity","description":"Calcula la similitud coseno, producto punto y distancias euclidiana y Manhattan entre dos vectores. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"vector-top-k","description":"Ordena hasta 2.000 vectores por similitud coseno con un vector consulta y devuelve los k mejores. Cuándo: un flujo de agente necesita un resultado exacto y repe"},{"name":"bm25-rank","description":"Ordena hasta 2.000 documentos para una consulta con BM25 (sin embeddings), con palabras sin tildes. Cuándo: un flujo de agente necesita un resultado exacto y re"},{"name":"backoff-schedule","description":"Calcula los tiempos de espera entre reintentos (exponencial, lineal o constante) con tope y jitter opcional. Cuándo: un flujo de agente necesita un resultado ex"},{"name":"retry-after-parse","description":"Interpreta Retry-After (segundos o fecha HTTP) en segundos de espera y hora absoluta de reintento. Cuándo: un flujo de agente necesita un resultado exacto y rep"},{"name":"rate-limit-plan","description":"Calcula, para un límite de N solicitudes por ventana, el espaciado mínimo, la duración total mínima y la espera del próximo llamado. Cuándo: un flujo de agente "},{"name":"idempotency-key","description":"Deriva una clave de idempotencia determinista de una solicitud (método, URL, cuerpo JSON canónico), para reutilizarla en reintentos. Cuándo: un flujo de agente "},{"name":"token-units-convert","description":"Convierte montos de tokens entre decimal y unidades base enteras de forma exacta (USDC 6 decimales, ETH 18…), como en x402. Cuándo: un flujo de agente necesita "},{"name":"x402-cost-estimate","description":"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. Cuándo"},{"name":"llm-cost-estimate","description":"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. Cuándo: un flujo de"},{"name":"text-redact-pii","description":"Enmascara datos personales y secretos en un texto: correos, teléfonos, tarjetas (Luhn), IBAN, IP, JWT, claves API y claves privadas. Basado en patrones. Cuándo:"},{"name":"tool-definition-convert","description":"Convierte una definición de herramienta entre los formatos MCP, OpenAI (function calling) y Anthropic (tool use). Cuándo: hay que leer, convertir o revisar una "},{"name":"color-convert","description":"Convierte colores CSS (hex, rgb, hsl, hwb, oklch, oklab, nombres) a hex, RGB, HSL, HSV, CMYK, OKLab, OKLCH y CIELAB. Cuándo: hay que calcular con exactitud colo"},{"name":"color-contrast","description":"Calcula la relación de contraste WCAG 2.x entre dos colores, con resultados AA/AAA para texto normal, grande y componentes. Cuándo: hay que calcular con exactit"},{"name":"color-contrast-fix","description":"Encuentra el color más cercano (variando solo la luminosidad OKLCH) que alcanza un contraste WCAG objetivo contra un fondo. Cuándo: hay que calcular con exactit"},{"name":"color-mix","description":"Mezcla dos colores con un peso (como color-mix de CSS) en OKLab, sRGB lineal o sRGB. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-adjust","description":"Ajusta un color en OKLCH: luminosidad, croma (saturación) y tono, o transparencia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. "},{"name":"color-palette","description":"Genera paletas armónicas desde un color base: complementaria, análoga, triádica, complementaria dividida, tetrádica o monocromática. Cuándo: hay que calcular co"},{"name":"color-scale","description":"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. Cuándo: hay que calcular con exactitud col"},{"name":"color-blindness-simulate","description":"Simula cómo se ve un color con protanopía, deuteranopía, tritanopía o acromatopsia. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej."},{"name":"color-delta-e","description":"Calcula la diferencia perceptual entre dos colores: ΔE CIEDE2000 y ΔE OKLab, con interpretación. Cuándo: hay que calcular con exactitud colores, contrastes o pa"},{"name":"color-name-nearest","description":"Encuentra el nombre de color CSS más cercano a un color dado (distancia OKLab). Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej. par"},{"name":"color-temperature","description":"Aproxima el color sRGB de una fuente de luz a una temperatura de 1.000 K a 40.000 K. Cuándo: hay que calcular con exactitud colores, contrastes o paletas, p. ej"},{"name":"color-luminance","description":"Devuelve la luminancia relativa WCAG, si el color es claro u oscuro y si conviene texto negro o blanco encima. Cuándo: hay que calcular con exactitud colores, c"},{"name":"json-parse-check","description":"Verifica si un texto es JSON válido; si no, devuelve el error con línea y columna. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructur"},{"name":"json-pretty","description":"Formatea JSON con sangría de 2/4 espacios o tabulador, con opción de ordenar claves. Cuándo: hay que transformar, comparar o revisar con exactitud datos estruct"},{"name":"json-minify","description":"Minifica JSON eliminando espacios; informa tamaños antes y después. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-sort-keys","description":"Ordena recursivamente las claves de los objetos JSON sin cambiar el orden de los arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud datos e"},{"name":"json-canonicalize","description":"Serializa JSON en forma canónica RFC 8785 (JCS) y devuelve su SHA-256. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, "},{"name":"json-pointer-get","description":"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 fal"},{"name":"json-path","description":"Evalúa una consulta JSONPath (subconjunto de RFC 9535, con filtros) y devuelve valores y rutas. Cuándo: hay que transformar, comparar o revisar con exactitud da"},{"name":"json-patch-apply","description":"Aplica un JSON Patch (RFC 6902) de forma atómica; si una operación falla, no se aplica nada. Cuándo: hay que transformar, comparar o revisar con exactitud datos"},{"name":"json-diff-patch","description":"Calcula un JSON Patch (RFC 6902) que transforma el documento a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CS"},{"name":"json-merge-patch-apply","description":"Aplica un JSON Merge Patch (RFC 7386): objetos se fusionan, null elimina, lo demás reemplaza. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-merge-patch-create","description":"Genera el JSON Merge Patch (RFC 7386) que convierte a en b. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV, YAML, "},{"name":"json-flatten-paths","description":"Aplana objetos y arreglos anidados en un nivel con claves con puntos (a.b.0.c). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurado"},{"name":"json-unflatten","description":"Reconstruye JSON anidado a partir de claves con puntos; los índices numéricos crean arreglos. Cuándo: hay que transformar, comparar o revisar con exactitud dato"},{"name":"json-pick","description":"Devuelve un objeto con solo las rutas indicadas (p. ej. user.name). Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados (JSON, CSV"},{"name":"json-omit","description":"Elimina las claves indicadas de un objeto; con deep=true en todos los niveles. Cuándo: hay que transformar, comparar o revisar con exactitud datos estructurados"},{"name":"json-describe","description":"Resume la estructura de un JSON: profundidad, conteos por tipo, tamaño y rutas distintas. Cuándo: hay que transformar, comparar o revisar con exactitud datos es"},{"name":"json-schema-validate","description":"Valida un JSON contra un JSON Schema (subconjunto propio, sin $ref); informa palabras clave no soportadas. Cuándo: hay que transformar, comparar o revisar con e"},{"name":"json-schema-from-samples","description":"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 pr"}],"package":null,"toolSurface":{"id":"ts_h449rtsdna5g","endpointId":"ep_ytzf685upxp4","hash":"b794ef7aab66c9befca1d7fb50569a372807df636c1d1e1a6babe8a03ddbd132","toolCount":50,"serverName":"bursia-utils","serverVersion":"1.8.1","protocolVersion":"2025-06-18","firstSeenAt":"2026-11-04T02:31:10.838Z","lastSeenAt":"2026-11-08T17:25:46.783Z","observations":14,"hiddenText":{"level":"none","total":0,"tools":0,"kinds":[],"findings":[]},"toolNames":["find_tool","token-estimate","prompt-template-fill","json-repair","json-extract","code-blocks-extract","rag-chunk","dedupe-similar","vector-similarity","vector-top-k","bm25-rank","backoff-schedule","retry-after-parse","rate-limit-plan","idempotency-key","token-units-convert","x402-cost-estimate","llm-cost-estimate","text-redact-pii","tool-definition-convert","color-convert","color-contrast","color-contrast-fix","color-mix","color-adjust","color-palette","color-scale","color-blindness-simulate","color-delta-e","color-name-nearest","color-temperature","color-luminance","json-parse-check","json-pretty","json-minify","json-sort-keys","json-canonicalize","json-pointer-get","json-path","json-patch-apply","json-diff-patch","json-merge-patch-apply","json-merge-patch-create","json-flatten-paths","json-unflatten","json-pick","json-omit","json-describe","json-schema-validate","json-schema-from-samples"],"distinctSurfaces":7,"surfacesWithHiddenText":0},"endpointFacts":[{"id":"ep_rjk3kgujsms2","url":"https://utils.burs-ia.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-11-07T16:23:49.746Z","auth":{"observedAt":"2026-11-07T16:23:49.900Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-11-07T16:23:49.914Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"utils.burs-ia.com","issuer":{"commonName":"YR1","organization":"Let's Encrypt"},"validFrom":"2026-11-01T02:05:18.000Z","validTo":"2027-01-30T02:05:17.000Z","daysToExpiry":82,"sanCount":1,"fingerprint256":"96:B5:87:56:A0:AF:61:3E:AB:E9:C3:F7:89:20:53:D6:BC:77:0A:34:6C:70:67:50:84:1A:C5:50:F7:20:4F:B5"}},{"id":"ep_b5vz7bhwb896","url":"https://utils.burs-ia.com/mcp/puerta","type":"mcp_streamable_http","factsCheckedAt":"2026-11-05T04:22:31.813Z","auth":{"observedAt":"2026-11-05T04:22:31.968Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-11-05T04:22:31.975Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"utils.burs-ia.com","issuer":{"commonName":"YR1","organization":"Let's Encrypt"},"validFrom":"2026-11-01T02:05:18.000Z","validTo":"2027-01-30T02:05:17.000Z","daysToExpiry":82,"sanCount":1,"fingerprint256":"96:B5:87:56:A0:AF:61:3E:AB:E9:C3:F7:89:20:53:D6:BC:77:0A:34:6C:70:67:50:84:1A:C5:50:F7:20:4F:B5"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.soyeladice-svg/bursia-utils","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.soyeladice-svg%2Fbursia-utils","firstSeenAt":"2026-11-03T16:21:17.560Z","fetchedAt":"2026-11-07T13:21:07.717Z","normalizedAt":"2026-11-07T13:21:07.717Z"}]},"firstSeenAt":"2026-11-03T16:21:17.560Z","updatedAt":"2026-11-08T17:30:56.124Z"}