Dúos

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

Should I use this

Quality & Safety

A
Description quality
90%
Schema completeness
91%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,384Tokens (tool definitions)
~2.3 KBTypical response size
Moderate attention impact (1.08% of 128k context)

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": {
    "duos": {
      "url": "https://usaduos.com/mcp"
    }
  }
}

Remote endpoints

https://usaduos.com/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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.

Input Schema

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

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

{
  "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.

Input Schema

{
  "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
}

Output Schema

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

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools