# Crear o editar un competidor

`save_competitor`

Crea un competidor de la marca, dentro del límite de competidores del plan, o edita uno existente por su id (de list_competitors). Para crear, name y website_url son obligatorios. Al editar, solo cambian los campos enviados; una lista reemplaza a la guardada. Los alias sirven para reconocer menciones con otro nombre y cuentan desde la próxima corrida semanal. Sin confirm devuelve la vista previa.

**Permiso:** Edición. Requiere un token de «Lectura y edición».

> **Cambia datos:** Modifica información de tu empresa en Bison. Tu agente debería pedirte confirmación antes de usarla.

## Parámetros

| Nombre | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `competitor_id` | texto | No | id de list_competitors para editar; omítelo para crear uno. |
| `name` | texto (1 a 120 caracteres) | No | Nombre de la marca competidora, como la nombra la IA. Obligatorio al crear. |
| `website_url` | texto (3 a 300 caracteres) | No | Sitio principal, por ejemplo rival.cl. Se guarda solo el dominio. Obligatorio al crear. |
| `aliases` | lista (hasta 20 elementos, de hasta 80 caracteres cada uno) | No | Otros nombres con que aparece (siglas, nombre comercial, sin tildes). Evita alias de 3 letras o menos: calzan dentro de otras palabras. |
| `website_urls_extra` | lista (hasta 10 elementos, de hasta 300 caracteres cada uno) | No | Otros dominios de la misma marca, por ejemplo el de otro país. |
| `competitor_type` | una de `direct`, `indirect` | No | direct: vende lo mismo; indirect: resuelve la misma necesidad de otra forma. direct al crear. |
| `status` | una de `active`, `inactive` | No | inactive deja de compararlo sin borrarlo. active al crear. |
| `confirm` | booleano | No | false u omitido: solo devuelve la vista previa sin guardar. true: lo hace. |

## Ejemplo de llamada

No tienes que escribir esto: tu agente decide cuándo usar la herramienta según lo que le pidas. Es la llamada MCP equivalente, con valores de relleno:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "save_competitor",
    "arguments": {
      "name": "<name>"
    }
  }
}
```

## Ejemplo de vista previa

Sin `confirm`, con `{"name":"Rival Tres","website_url":"rival-tres.example","aliases":["R3","Rival 3"]}`, no guarda nada y devuelve esto, para una marca ficticia («Altavista Seguros»). Para guardar, repite la llamada con `confirm: true`.

```json
{
  "saved": false,
  "changed": true,
  "id": null,
  "created": true,
  "quota": {
    "used": 2,
    "limit": 20
  },
  "changes": {
    "company_name": {
      "before": null,
      "after": "Rival Tres"
    },
    "website_url": {
      "before": null,
      "after": "https://rival-tres.example"
    },
    "aliases": {
      "before": null,
      "after": [
        "R3",
        "Rival 3"
      ]
    }
  },
  "warnings": [
    "Alias muy cortos (R3): pueden aparecer dentro de otras palabras y contar menciones falsas."
  ],
  "notes": "Vista previa: no se guardó nada. Muéstrale el cambio al usuario y repite la llamada con confirm: true para guardarlo. Los alias cuentan desde la próxima corrida semanal."
}
```
