Capucine

Capucine, styliste IA ScoreLook : looks sourcés, météo, hubs pièces, critères shopping.

¿Debería usar esto?

Calidad y seguridad

B
Calidad de la descripción
68%
Integridad del esquema
72%
Calidad de los nombres
86%
Riesgo de envenenamiento
100%
Coincidencia de permisos
90%
Cumplimiento del protocolo
100%

Hallazgos (14)

  • LOWTool 'search' description lacks action verben search
  • LOWTool 'shopping_criteria' description lacks action verben shopping_criteria
  • LOWTool 'shopping_search' description lacks action verben shopping_search
  • LOWTool 'shop_the_look' description lacks action verben shop_the_look
  • LOWTool 'get_piece_hub' description lacks action verben get_piece_hub
  • LOWTool 'ask_capucine' description lacks action verben ask_capucine
  • LOWTool 'cite_sources' description lacks action verben cite_sources
  • LOWTool 'classify_circumstance' description lacks action verben classify_circumstance
  • LOWTool 'weather_looks' description lacks action verben weather_looks
  • LOWTool 'get_weather_context' description lacks action verben get_weather_context

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

Costo de contexto

~8,009Tokens (definiciones de herramientas)
~3.7 KBTamaño de respuesta típico
Impacto significativo en la atención (6.26% 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": {
    "capucine": {
      "url": "https://scorelook.fr/mcp"
    }
  }
}

Puntos de conexión remotos

https://scorelook.fr/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (21)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢manifest(detail_level)

Je présente ma surface publique : outils, limites de sécurité, pages à citer. Read-only. Le paiement public n'est pas ouvert tant que public_status ne le dit pas.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "detail_level": {
      "default": "brief",
      "enum": [
        "brief",
        "full"
      ],
      "title": "Detail Level",
      "type": "string"
    }
  },
  "title": "manifestArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Version"
    },
    "server_build": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Server Build"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Name"
    },
    "read_only": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Read Only"
    },
    "payment_open": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Payment Open"
    },
    "tools": {
      "items": {
        "type": "string"
      },
      "title": "Tools",
      "type": "array"
    },
    "key_pages": {
      "items": {
        "type": "string"
      },
      "title": "Key Pages",
      "type": "array"
    },
    "safety": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Safety"
    },
    "clients": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Clients"
    },
    "origin_policy": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Origin Policy"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "ManifestOut"
}
🟢search(query, limit, content_type, detail_level)

Je cherche dans mes hubs, articles et looks. Appelle-moi avant de répondre pour citer de vraies pages ScoreLook. Préfère content_type=article ou piece_hub.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Sujet de stylisme à chercher.",
      "minLength": 1,
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 4,
      "description": "Number of items, 1-12.",
      "maximum": 12,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    },
    "content_type": {
      "default": "all",
      "enum": [
        "all",
        "article",
        "look",
        "piece_hub"
      ],
      "title": "Content Type",
      "type": "string"
    },
    "detail_level": {
      "default": "brief",
      "enum": [
        "brief",
        "full"
      ],
      "title": "Detail Level",
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "title": "searchArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "out_of_scope": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Out Of Scope"
    },
    "message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Message"
    },
    "results": {
      "items": {
        "$ref": "#/$defs/SearchHitOut"
      },
      "title": "Results",
      "type": "array"
    },
    "matched_terms": {
      "items": {
        "type": "string"
      },
      "title": "Matched Terms",
      "type": "array"
    },
    "citation_urls": {
      "items": {
        "type": "string"
      },
      "title": "Citation Urls",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "$defs": {
    "SearchHitOut": {
      "additionalProperties": true,
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Type"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "match_score": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Match Score"
        }
      },
      "title": "SearchHitOut",
      "type": "object"
    }
  },
  "additionalProperties": true,
  "title": "SearchOut"
}
🟢fetch(id)

Je lis un article ou un look public par l'id renvoyé par search. Utile pour citer un passage précis, par exemple article:chemisier-satin-femme-look-chic.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "id": {
      "description": "Identifiant renvoyé par search, ex. article:chemisier-satin-femme-look-chic.",
      "minLength": 3,
      "title": "Id",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "title": "fetchArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Message"
    },
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Id"
    },
    "citation_urls": {
      "items": {
        "type": "string"
      },
      "title": "Citation Urls",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "FetchOut"
}
🟢recommend_look(piece, color, occasion, audacity, season, ...)

Je compose une silhouette complète : look nommé, capsule (pièce, ancre, chaussures, sac, un bijou), à surveiller. Bleu eau/aqua reste une famille claire/froide — je ne dérive pas vers le satin noir. Si la teinte n'est pas au catalogue : limits[] + look éditorial.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "piece": {
      "description": "Pièce, matière ou intention — chemisier, jupe cuir, satin…",
      "minLength": 1,
      "title": "Piece",
      "type": "string"
    },
    "color": {
      "default": "",
      "title": "Color",
      "type": "string"
    },
    "occasion": {
      "default": "",
      "title": "Occasion",
      "type": "string"
    },
    "audacity": {
      "default": "",
      "title": "Audacity",
      "type": "string"
    },
    "season": {
      "default": "",
      "title": "Season",
      "type": "string"
    },
    "material": {
      "default": "",
      "title": "Material",
      "type": "string"
    },
    "detail_level": {
      "default": "brief",
      "enum": [
        "brief",
        "full"
      ],
      "title": "Detail Level",
      "type": "string"
    },
    "include_conversion": {
      "default": false,
      "title": "Include Conversion",
      "type": "boolean"
    }
  },
  "required": [
    "piece"
  ],
  "title": "recommend_lookArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "out_of_scope": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Out Of Scope"
    },
    "rule_match": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Rule Match"
    },
    "recommendation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Recommendation"
    },
    "capsule": {
      "items": {},
      "title": "Capsule",
      "type": "array"
    },
    "avoid": {
      "items": {},
      "title": "Avoid",
      "type": "array"
    },
    "citation_urls": {
      "items": {
        "type": "string"
      },
      "title": "Citation Urls",
      "type": "array"
    },
    "action": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Action"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "RecommendLookOut"
}
🟢shopping_criteria(query, piece, color, occasion, season, ...)

Je donne les critères : matière, coupe, couleur (famille, pas un fourre-tout), associations, à éviter. Critères d'abord — jamais une copie exacte ni un SKU inventé.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "piece": {
      "default": "",
      "title": "Piece",
      "type": "string"
    },
    "color": {
      "default": "",
      "title": "Color",
      "type": "string"
    },
    "occasion": {
      "default": "",
      "title": "Occasion",
      "type": "string"
    },
    "season": {
      "default": "",
      "title": "Season",
      "type": "string"
    },
    "material": {
      "default": "",
      "title": "Material",
      "type": "string"
    }
  },
  "title": "shopping_criteriaArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "citation_urls": {
      "items": {
        "type": "string"
      },
      "title": "Citation Urls",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "ShoppingCriteriaOut"
}
🟢shopping_search(query, limit, include_products)

Je cherche des pistes proches de l'intention. Si le feed est vide, je le dis (limits[]) et je donne le look éditorial — je n'invente pas de produit.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Intention d'achat ou pièce.",
      "minLength": 1,
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 4,
      "description": "Number of items, 1-12.",
      "maximum": 12,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    },
    "include_products": {
      "default": true,
      "title": "Include Products",
      "type": "boolean"
    }
  },
  "required": [
    "query"
  ],
  "title": "shopping_searchArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "products": {
      "items": {
        "$ref": "#/$defs/ProductLeadOut"
      },
      "title": "Products",
      "type": "array"
    },
    "product_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Product Count"
    },
    "disclaimer": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Disclaimer"
    },
    "citation_urls": {
      "items": {
        "type": "string"
      },
      "title": "Citation Urls",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "$defs": {
    "ProductLeadOut": {
      "additionalProperties": true,
      "properties": {
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "merchant": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Merchant"
        },
        "price": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Price"
        },
        "currency": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Currency"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "image_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Image Url"
        },
        "checked_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Checked At"
        },
        "availability_status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Availability Status"
        },
        "availability_checked_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Availability Checked At"
        },
        "price_type": {
          "anyOf": [
            {
              "enum": [
                "current",
                "sale",
                "observed"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Price Type"
        },
        "match_score": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Match Score"
        },
        "match_reasons": {
          "items": {
            "type": "string"
          },
          "title": "Match Reasons",
          "type": "array"
        },
        "link_health": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Link Health"
        },
        "browser_only": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Browser Only"
        },
        "affiliate": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Affiliate"
        },
        "disclosure": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Disclosure"
        }
      },
      "title": "ProductLeadOut",
      "type": "object"
    }
  },
  "additionalProperties": true,
  "title": "ShoppingSearchOut"
}
🟢shop_the_look(piece, limit, include_products)

Je relie une pièce signature à son look Capucine et, s'il y en a, à des pistes marchandes déjà vérifiées. Hub chemisier = article satin + capsule, même si le feed est vide.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "piece": {
      "description": "Slug ou langage naturel : chemisier, jupe-cuir, blouse…",
      "minLength": 1,
      "title": "Piece",
      "type": "string"
    },
    "limit": {
      "default": 4,
      "description": "Number of items, 1-12.",
      "maximum": 12,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    },
    "include_products": {
      "default": true,
      "title": "Include Products",
      "type": "boolean"
    }
  },
  "required": [
    "piece"
  ],
  "title": "shop_the_lookArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "piece": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Piece"
    },
    "products": {
      "items": {
        "$ref": "#/$defs/ProductLeadOut"
      },
      "title": "Products",
      "type": "array"
    },
    "product_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Product Count"
    },
    "disclaimer": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Disclaimer"
    },
    "citation_urls": {
      "items": {
        "type": "string"
      },
      "title": "Citation Urls",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "$defs": {
    "ProductLeadOut": {
      "additionalProperties": true,
      "properties": {
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Title"
        },
        "merchant": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Merchant"
        },
        "price": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Price"
        },
        "currency": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Currency"
        },
        "url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Url"
        },
        "image_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Image Url"
        },
        "checked_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Checked At"
        },
        "availability_status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Availability Status"
        },
        "availability_checked_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Availability Checked At"
        },
        "price_type": {
          "anyOf": [
            {
              "enum": [
                "current",
                "sale",
                "observed"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Price Type"
        },
        "match_score": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Match Score"
        },
        "match_reasons": {
          "items": {
            "type": "string"
          },
          "title": "Match Reasons",
          "type": "array"
        },
        "link_health": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Link Health"
        },
        "browser_only": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Browser Only"
        },
        "affiliate": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Affiliate"
        },
        "disclosure": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Disclosure"
        }
      },
      "title": "ProductLeadOut",
      "type": "object"
    }
  },
  "additionalProperties": true,
  "title": "ShopTheLookOut"
}
🟢get_piece_hub(piece, include_products)

Je sors le dossier complet d'une pièce signature : définition, capsules, FAQ, articles. Chemisier / blouse / chemise → hub chemisier. Si le shopping est vide, le look et les sources restent.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "piece": {
      "description": "Slug ou langage naturel (chemisier, blouse, jupe cuir → jupe-cuir).",
      "minLength": 1,
      "title": "Piece",
      "type": "string"
    },
    "include_products": {
      "default": true,
      "title": "Include Products",
      "type": "boolean"
    }
  },
  "required": [
    "piece"
  ],
  "title": "get_piece_hubArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "piece": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Piece"
    },
    "url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Url"
    },
    "definition": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Definition"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "PieceHubOut"
}
🟢ask_capucine(question, detail_level, include_products, include_conversion, limit)

Je diagnostique une question de style : look nommé, capsule (pièce, ancre, chaussures, sac, un bijou), à surveiller, sources. Les détails personnels restent sur le serveur via un jeton opaque.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "question": {
      "title": "Question",
      "type": "string"
    },
    "detail_level": {
      "default": "brief",
      "enum": [
        "brief",
        "full"
      ],
      "title": "Detail Level",
      "type": "string"
    },
    "include_products": {
      "default": false,
      "title": "Include Products",
      "type": "boolean"
    },
    "include_conversion": {
      "default": false,
      "title": "Include Conversion",
      "type": "boolean"
    },
    "limit": {
      "default": 4,
      "description": "Number of items, 1-12.",
      "maximum": 12,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "question"
  ],
  "title": "ask_capucineArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "out_of_scope": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Out Of Scope"
    },
    "diagnosis": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Diagnosis"
    },
    "recommendation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Recommendation"
    },
    "capsule": {
      "items": {},
      "title": "Capsule",
      "type": "array"
    },
    "avoid": {
      "items": {},
      "title": "Avoid",
      "type": "array"
    },
    "citation_urls": {
      "items": {
        "type": "string"
      },
      "title": "Citation Urls",
      "type": "array"
    },
    "action": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Action"
    },
    "rule_match": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Rule Match"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "AskCapucineOut"
}
🟢list_piece_hubs

Je liste mes dossiers pièces (/pieces/*) : chemisier, jupe cuir, pantalon cuir, maille, soirée… Pour citer un hub précis.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "title": "list_piece_hubsArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "hubs": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Hubs",
      "type": "array"
    },
    "count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Count"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "PieceHubListOut"
}
🟢cite_sources(topic, limit)

Je choisis les URLs ScoreLook à citer. Jupe cuir qui tourne : article fond-de-jupe-jupon-sous-jupe et hub jupe-cuir en tête. Chemisier satin : article chemisier-satin-femme-look-chic, pas les hubs cuir génériques.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "topic": {
      "default": "",
      "title": "Topic",
      "type": "string"
    },
    "limit": {
      "default": 4,
      "description": "Number of items, 1-12.",
      "maximum": 12,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "cite_sourcesArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "out_of_scope": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Out Of Scope"
    },
    "topic": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Topic"
    },
    "sources": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Sources",
      "type": "array"
    },
    "citation_urls": {
      "items": {
        "type": "string"
      },
      "title": "Citation Urls",
      "type": "array"
    },
    "matched_terms": {
      "items": {
        "type": "string"
      },
      "title": "Matched Terms",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "CiteSourcesOut"
}
🟢public_status

Statut commercial public seulement. Je n'invente jamais un paiement ouvert. Aucun chemin opérateur.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "title": "public_statusArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Status"
    },
    "payment_open": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Payment Open"
    },
    "public_blockers": {
      "items": {
        "type": "string"
      },
      "title": "Public Blockers",
      "type": "array"
    },
    "version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Version"
    },
    "checked_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Checked At"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "PublicStatusOut"
}
🟢classify_circumstance(question, occasion, transport, piece, at)

Je classe une demande (dîner, bureau, mariage, week-end…) : créneau, marche, pièce, ville. Pas encore de météo. Enchaîne avec recommend_weather_look.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "question": {
      "title": "Question",
      "type": "string"
    },
    "occasion": {
      "default": "",
      "title": "Occasion",
      "type": "string"
    },
    "transport": {
      "default": "",
      "title": "Transport",
      "type": "string"
    },
    "piece": {
      "default": "",
      "title": "Piece",
      "type": "string"
    },
    "at": {
      "default": "",
      "title": "At",
      "type": "string"
    }
  },
  "required": [
    "question"
  ],
  "title": "classify_circumstanceArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Message"
    },
    "circumstance": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Circumstance"
    },
    "extracted": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Extracted"
    },
    "outdoor_minutes": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Outdoor Minutes"
    },
    "indoor_minutes": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Indoor Minutes"
    },
    "needs_location": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Needs Location"
    },
    "next_tool": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Tool"
    },
    "page": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Page"
    },
    "citation_urls": {
      "items": {
        "type": "string"
      },
      "title": "Citation Urls",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "CircumstanceOut"
}
🟢weather_looks(city, latitude, longitude, days)

Looks matin, midi, soir selon la météo locale. Ville/CP OU latitude+longitude. Je ne suppose jamais Paris.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "city": {
      "default": "",
      "title": "City",
      "type": "string"
    },
    "latitude": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Latitude, -90 to 90. Requires longitude.",
      "title": "Latitude"
    },
    "longitude": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Longitude, -180 to 180. Requires latitude.",
      "title": "Longitude"
    },
    "days": {
      "default": 5,
      "description": "Forecast days, 1 to 7.",
      "maximum": 7,
      "minimum": 1,
      "title": "Days",
      "type": "integer"
    }
  },
  "title": "weather_looksArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Message"
    },
    "suggestions": {
      "items": {
        "$ref": "#/$defs/LocationSuggestionOut"
      },
      "title": "Suggestions",
      "type": "array"
    },
    "place": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Place"
    },
    "timezone": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Timezone"
    },
    "weather_source": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Weather Source"
    },
    "fetched_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Fetched At"
    },
    "days": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Days",
      "type": "array"
    },
    "page": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Page"
    }
  },
  "required": [
    "success"
  ],
  "$defs": {
    "LocationSuggestionOut": {
      "additionalProperties": true,
      "properties": {
        "name": {
          "default": "",
          "title": "Name",
          "type": "string"
        },
        "admin1": {
          "default": "",
          "title": "Admin1",
          "type": "string"
        },
        "admin2": {
          "default": "",
          "title": "Admin2",
          "type": "string"
        },
        "country": {
          "default": "",
          "title": "Country",
          "type": "string"
        },
        "label": {
          "default": "",
          "title": "Label",
          "type": "string"
        }
      },
      "title": "LocationSuggestionOut",
      "type": "object"
    }
  },
  "additionalProperties": true,
  "description": "Plan matin/midi/soir or a structured location error. Never a silent Paris fallback.",
  "title": "WeatherLooksOut"
}
🟢get_weather_context(location, latitude, longitude, at, outdoor_minutes, ...)

Faits météo seulement. Ville/CP OU lat+lon. question= peut porter la ville. Pas de repli silencieux sur Paris.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "location": {
      "default": "",
      "title": "Location",
      "type": "string"
    },
    "latitude": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Latitude, -90 to 90. Requires longitude.",
      "title": "Latitude"
    },
    "longitude": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Longitude, -180 to 180. Requires latitude.",
      "title": "Longitude"
    },
    "at": {
      "default": "",
      "description": "ISO 8601 or natural French time. Unreadable values return invalid_datetime.",
      "title": "At",
      "type": "string"
    },
    "outdoor_minutes": {
      "default": 20,
      "description": "Minutes outside, 0 to 180.",
      "maximum": 180,
      "minimum": 0,
      "title": "Outdoor Minutes",
      "type": "integer"
    },
    "occasion": {
      "default": "",
      "title": "Occasion",
      "type": "string"
    },
    "question": {
      "default": "",
      "title": "Question",
      "type": "string"
    }
  },
  "title": "get_weather_contextArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Message"
    },
    "suggestions": {
      "items": {
        "$ref": "#/$defs/LocationSuggestionOut"
      },
      "title": "Suggestions",
      "type": "array"
    },
    "location": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Location"
    },
    "weather": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Weather"
    },
    "timezone": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Timezone"
    },
    "source": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Source"
    },
    "limits": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Limits"
    },
    "privacy": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Privacy"
    }
  },
  "required": [
    "success"
  ],
  "$defs": {
    "LocationSuggestionOut": {
      "additionalProperties": true,
      "properties": {
        "name": {
          "default": "",
          "title": "Name",
          "type": "string"
        },
        "admin1": {
          "default": "",
          "title": "Admin1",
          "type": "string"
        },
        "admin2": {
          "default": "",
          "title": "Admin2",
          "type": "string"
        },
        "country": {
          "default": "",
          "title": "Country",
          "type": "string"
        },
        "label": {
          "default": "",
          "title": "Label",
          "type": "string"
        }
      },
      "title": "LocationSuggestionOut",
      "type": "object"
    }
  },
  "additionalProperties": true,
  "title": "WeatherContextOut"
}
🟢recommend_weather_look(location, latitude, longitude, at, occasion, ...)

Je croise la circonstance et le bulletin, ou je dis si la pièce tient. Passe question=. Jamais Paris par défaut. La ville n'est pas stockée.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "location": {
      "default": "",
      "title": "Location",
      "type": "string"
    },
    "latitude": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Latitude, -90 to 90. Requires longitude.",
      "title": "Latitude"
    },
    "longitude": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Longitude, -180 to 180. Requires latitude.",
      "title": "Longitude"
    },
    "at": {
      "default": "",
      "description": "ISO 8601 or natural French time.",
      "title": "At",
      "type": "string"
    },
    "occasion": {
      "default": "",
      "title": "Occasion",
      "type": "string"
    },
    "outdoor_minutes": {
      "default": 20,
      "description": "Minutes outside, 0 to 180.",
      "maximum": 180,
      "minimum": 0,
      "title": "Outdoor Minutes",
      "type": "integer"
    },
    "transport": {
      "default": "",
      "title": "Transport",
      "type": "string"
    },
    "piece": {
      "default": "",
      "title": "Piece",
      "type": "string"
    },
    "question": {
      "default": "",
      "title": "Question",
      "type": "string"
    }
  },
  "title": "recommend_weather_lookArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Message"
    },
    "suggestions": {
      "items": {
        "$ref": "#/$defs/LocationSuggestionOut"
      },
      "title": "Suggestions",
      "type": "array"
    },
    "location_label": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Location Label"
    },
    "location": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Location"
    },
    "timezone": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Timezone"
    },
    "circumstance": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Circumstance"
    },
    "weather": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Weather"
    },
    "recommendation": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Recommendation"
    },
    "reason": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Reason"
    },
    "image": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Image"
    },
    "action": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Action"
    },
    "source": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Source"
    },
    "limits": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Limits"
    },
    "privacy": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Privacy"
    }
  },
  "required": [
    "success"
  ],
  "$defs": {
    "LocationSuggestionOut": {
      "additionalProperties": true,
      "properties": {
        "name": {
          "default": "",
          "title": "Name",
          "type": "string"
        },
        "admin1": {
          "default": "",
          "title": "Admin1",
          "type": "string"
        },
        "admin2": {
          "default": "",
          "title": "Admin2",
          "type": "string"
        },
        "country": {
          "default": "",
          "title": "Country",
          "type": "string"
        },
        "label": {
          "default": "",
          "title": "Label",
          "type": "string"
        }
      },
      "title": "LocationSuggestionOut",
      "type": "object"
    }
  },
  "additionalProperties": true,
  "title": "WeatherLookOut"
}
🟢llms_guide

Carte ScoreLook pour les assistants : pages, hubs (dont chemisier), éditorial, règles de citation.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "title": "llms_guideArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "incident_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Incident Id"
    },
    "url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Url"
    },
    "llms_txt_chars": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Llms Txt Chars"
    }
  },
  "required": [
    "success"
  ],
  "additionalProperties": true,
  "title": "LlmsGuideOut"
}
⚪proposer_demande_rappel(email, prenom, message, consent)

Je prepare une demande de rappel (ecriture consentie). email ET consent=true obligatoires. Retourne un action_id a confirmer par l'utilisateur (valable 10 minutes). Aucun enregistrement sans confirmation.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "email": {
      "title": "Email",
      "type": "string"
    },
    "prenom": {
      "default": "",
      "title": "Prenom",
      "type": "string"
    },
    "message": {
      "default": "",
      "title": "Message",
      "type": "string"
    },
    "consent": {
      "default": false,
      "title": "Consent",
      "type": "boolean"
    }
  },
  "required": [
    "email"
  ],
  "title": "proposer_demande_rappelArguments"
}
⚪confirmer_action(action_id)

J'execute une demande preparee APRES confirmation explicite du visiteur (enregistre la demande et previent l'equipe).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "action_id": {
      "title": "Action Id",
      "type": "integer"
    }
  },
  "required": [
    "action_id"
  ],
  "title": "confirmer_actionArguments"
}
⚪annuler_action(action_id)

J'annule une demande preparee non confirmee.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "action_id": {
      "title": "Action Id",
      "type": "integer"
    }
  },
  "required": [
    "action_id"
  ],
  "title": "annuler_actionArguments"
}
🟢statut_actions

Je renvoie les compteurs des ecritures preparees (aucune donnee personnelle).

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "title": "statut_actionsArguments"
}

Prompts recomendados

search_research
Search for information about [topic] using Capucine
Herramientas esperadas: search
list_items
List all [items] available in Capucine
Herramientas esperadas: list_piece_hubs
find_specific
Find [specific item] using Capucine
Herramientas esperadas: search
retrieve_data
Get details about [item] from Capucine
Herramientas esperadas: fetch
fetch_info
Fetch [information type] using Capucine
Herramientas esperadas: fetch

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada21 herramientas
verificadoversión no registrada17 herramientas