Dúos

Two AI perspectives and a cross-review. OAuth required; new consultations use your Dúos quota.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
90%
Integridad del esquema
91%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,384Tokens (definiciones de herramientas)
~2.3 KBTamaño de respuesta típico
Impacto moderado en la atención (1.08% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "duos": {
      "url": "https://usaduos.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://usaduos.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (4)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢duos_consultar_cuota(response_format)

Devuelve el plan, las consultas disponibles y el presupuesto propio de IA. No genera respuestas ni consume consultas. No muestra otros clientes ni el gasto global.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "response_format": {
      "type": "string",
      "enum": [
        "json",
        "markdown"
      ],
      "description": "Formato del texto; structuredContent siempre contiene los datos."
    }
  },
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "credits": {
      "type": "object"
    },
    "budget": {
      "type": "object"
    }
  },
  "required": [
    "credits",
    "budget"
  ]
}
⚪duos_crear_consulta(message, idempotency_key, chat_id, mode, locale, ...)

Crea una consulta autenticada: dos análisis iniciales separados y una revisión cruzada de cada modelo. Envía el texto a proveedores de IA y puede consumir UNA consulta del plan y gasto de IA. Requiere intención del cliente; no usar como comprobación gratuita de conexión. Devuelve jobId/status para consultar el resultado con duos_obtener_resultado. Reutiliza el MISMO idempotency_key UUID si reintentas la MISMA pregunta; nunca cambies el mensaje con esa clave.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "message": {
      "type": "string",
      "minLength": 1,
      "maxLength": 6000,
      "description": "Pregunta o decisión y contexto que el cliente desea enviar a los dos modelos."
    },
    "idempotency_key": {
      "type": "string",
      "format": "uuid",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$",
      "description": "UUID nuevo por pregunta; conservarlo para reintentos de esa misma consulta."
    },
    "chat_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{1,100}$",
      "maxLength": 100,
      "description": "Chat propio que continuar; si se omite se abre uno asociado a esta consulta."
    },
    "mode": {
      "type": "string",
      "enum": [
        "general",
        "coaching",
        "negocios",
        "amor",
        "espiritualidad"
      ],
      "description": "Tema de la consulta; por defecto general."
    },
    "locale": {
      "type": "string",
      "enum": [
        "es",
        "en"
      ]
    },
    "response_format": {
      "type": "string",
      "enum": [
        "json",
        "markdown"
      ],
      "description": "Formato del texto; structuredContent siempre contiene los datos."
    }
  },
  "required": [
    "message",
    "idempotency_key"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "jobId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "requestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "status": {
      "type": "string"
    },
    "pollAfterMs": {
      "type": "integer"
    }
  },
  "required": [
    "jobId",
    "requestId",
    "status"
  ]
}
🟢duos_obtener_resultado(job_id, response_format)

Recupera únicamente un trabajo propio creado antes. No vuelve a llamar a modelos ni descuenta consultas. Si sigue pendiente, respeta pollAfterMs antes de volver a leer. Un error no es un resultado completo.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$",
      "description": "jobId devuelto por duos_crear_consulta."
    },
    "response_format": {
      "type": "string",
      "enum": [
        "json",
        "markdown"
      ],
      "description": "Formato del texto; structuredContent siempre contiene los datos."
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "jobId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "requestId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },
    "status": {
      "type": "string"
    },
    "result": {
      "type": "object"
    },
    "error": {
      "type": [
        "string",
        "object"
      ]
    },
    "pollAfterMs": {
      "type": "integer"
    }
  },
  "required": [
    "jobId",
    "requestId",
    "status"
  ]
}
🟢duos_listar_consultas(limit, offset, response_format)

Lista una página del historial propio de consultas. Requiere el permiso separado duos:history. No genera respuestas. Continúa con nextOffset cuando no sea null.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 40,
      "default": 20
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000,
      "default": 0
    },
    "response_format": {
      "type": "string",
      "enum": [
        "json",
        "markdown"
      ],
      "description": "Formato del texto; structuredContent siempre contiene los datos."
    }
  },
  "additionalProperties": false
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "consultations": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "nextOffset": {
      "type": [
        "integer",
        "null"
      ]
    }
  },
  "required": [
    "consultations",
    "nextOffset"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada4 herramientas