WATR Software Oracle — estándar de arquitectura por rule_id
152 reglas con postura: enforce bloquea el PR, prefer se justifica. Clean Code, SOLID y agentes.
Should I use this
Quality & Safety
Findings (1)
- LOWin get_rule
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"watr-software-oracle": {
"url": "https://watr-software-oracle.onrender.com/mcp"
}
}
}Remote endpoints
https://watr-software-oracle.onrender.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢get_rule(rule_id)
Devuelve una regla, smell o meta-heurística completa por su rule_id. Ejemplos de rule_id: CC-FN-01, SOLID-DIP-01, SMELL-14, WATR-MH-02.
Input Schema
{
"type": "object",
"properties": {
"rule_id": {
"title": "Rule Id",
"type": "string"
}
},
"required": [
"rule_id"
],
"title": "get_ruleArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_ruleOutput"
}🟢search_practices(query, k)
Busca las reglas del estándar WATR que aplican a una consulta o a un fragmento. La consulta debe ir **en inglés**: el corpus está en inglés y la búsqueda es léxica, así que una consulta en español devuelve poco o nada. Traduce la intención antes de llamar ("catch vacío" -> "empty catch swallowing error"). Devuelve top-k con rule_id y stance; usa get_rule para el texto completo.
Input Schema
{
"type": "object",
"properties": {
"query": {
"title": "Query",
"type": "string"
},
"k": {
"default": 5,
"title": "K",
"type": "integer"
}
},
"required": [
"query"
],
"title": "search_practicesArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "search_practicesOutput"
}⚪review_code(code, language)
Devuelve el estándar WATR que aplica a un fragmento, para que TÚ emitas el veredicto. Este servidor no juzga el código: entrega las señales estructurales que observa, las reglas aplicables con su stance, las meta-heurísticas que gobiernan el juicio, y el formato de salida obligatorio. El razonamiento y el veredicto son tuyos — la consistencia la pone el corpus.
Input Schema
{
"type": "object",
"properties": {
"code": {
"title": "Code",
"type": "string"
},
"language": {
"default": "",
"title": "Language",
"type": "string"
}
},
"required": [
"code"
],
"title": "review_codeArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "review_codeOutput"
}⚪judge_code(code, language)
Opinión del corpus sobre un fragmento, con una probabilidad por regla. Diferencia con `review_code`: ahí recibes las reglas y juzgas tú, así que dos clientes sobre el mismo diff pueden discrepar. Aquí el corpus se moja: una pregunta por regla en alcance, y el stance decide qué umbral aplica. ⚠️ NO es una compuerta, y no lo cuelgues de un CI. Medido sobre 13 pares reales (26 mediciones, 6 autores, 2018–2026): deja pasar el 38% de las violaciones, y el barrido completo de umbrales no encuentra nada mejor porque el límite es la resolución del instrumento, no dónde se corta. Para lo que sí sirve: ordenar qué mirar primero y decirte con qué regla, que son 11 aciertos de 13 al comparar un antes contra un después. ⚠️ Manda el fragmento a api.typesafe.ai, un tercero. `review_code` no sale de esta máquina: si el código no puede salir, usa ése.
Input Schema
{
"type": "object",
"properties": {
"code": {
"title": "Code",
"type": "string"
},
"language": {
"default": "",
"title": "Language",
"type": "string"
}
},
"required": [
"code"
],
"title": "judge_codeArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "judge_codeOutput"
}🟢list_domains
Mapa del corpus: dominios, temas y los rule_id de cada uno, con su stance.
Input Schema
{
"type": "object",
"properties": {},
"title": "list_domainsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_domainsOutput"
}Community
Evidence