> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yofacturo.es/llms.txt
> Use this file to discover all available pages before exploring further.

# Herramientas

> Referencia de las herramientas MCP disponibles en el servidor de YoFacturo.

# Herramientas

El servidor expone **14 herramientas** agrupadas por área funcional.

## Organización

### `get_user_organization_info`

Devuelve el contexto de la organización activa (NIF, régimen fiscal y valores por defecto) para que el agente pueda operar con el contexto fiscal correcto cuando necesite contexto de empresa o valores fiscales.

***

### `get_mcp_workflows_guidance`

Devuelve una guía resumida de workflows MCP (nombre del flujo, descripción y pasos de arranque) para ayudar al agente a planificar o ejecutar flujos de varios pasos.

***

## Contactos

### `list_contacts`

Busca contactos de la organización con filtros opcionales.

| Parámetro         | Tipo    | Requerido | Descripción                                    |
| ----------------- | ------- | --------- | ---------------------------------------------- |
| `query`           | string  | No        | Búsqueda por nombre (insensible a mayúsculas). |
| `document_number` | string  | No        | Filtro por número de documento (NIF/CIF).      |
| `email`           | string  | No        | Filtro por email.                              |
| `page`            | integer | No        | Número de página.                              |

***

### `resolve_contact`

Resuelve de forma determinista un único contacto. Devuelve `status` (`unique` / `ambiguous` / `none`) y hasta 5 candidatos. Úsalo antes de cualquier operación de escritura que necesite un `contact_id`.

| Parámetro         | Tipo    | Requerido | Descripción                                          |
| ----------------- | ------- | --------- | ---------------------------------------------------- |
| `query`           | string  | No        | Búsqueda libre por nombre (insensible a mayúsculas). |
| `document_number` | string  | No        | Coincidencia exacta con NIF/CIF.                     |
| `email`           | string  | No        | Coincidencia exacta con email.                       |
| `id`              | integer | No        | Id exacto del contacto. Ignora el resto de filtros.  |

Al menos uno de los cuatro campos es obligatorio.

***

### `create_contact`

Crea un nuevo contacto en la organización. Idempotente por `document_number`: si ya existe un contacto con ese NIF/CIF, devuelve el existente en lugar de crear un duplicado.

***

### `update_contact`

Actualiza los campos de un contacto existente. Solo se modifican los campos que se pasen (semántica PATCH).

| Parámetro | Tipo    | Requerido | Descripción                   |
| --------- | ------- | --------- | ----------------------------- |
| `id`      | integer | Sí        | Id del contacto a actualizar. |

***

## Productos

### `resolve_product`

Resuelve de forma determinista un único producto. Devuelve `status` (`unique` / `ambiguous` / `none`) y candidatos. Úsalo antes de crear un borrador de factura.

| Parámetro | Tipo    | Requerido | Descripción                  |
| --------- | ------- | --------- | ---------------------------- |
| `query`   | string  | No        | Búsqueda libre por concepto. |
| `id`      | integer | No        | Id exacto del producto.      |

Al menos uno de los dos campos es obligatorio.

***

### `create_product`

Añade un nuevo producto al catálogo de la organización.

***

### `update_product`

Actualiza los campos de un producto existente. Solo se modifican los campos que se pasen (semántica PATCH).

| Parámetro | Tipo    | Requerido | Descripción                   |
| --------- | ------- | --------- | ----------------------------- |
| `id`      | integer | Sí        | Id del producto a actualizar. |

***

## Facturas

### `resolve_invoice`

Localiza una factura emitida existente.

| Parámetro               | Tipo    | Requerido | Descripción                                             |
| ----------------------- | ------- | --------- | ------------------------------------------------------- |
| `id`                    | integer | No        | Id exacto de la factura.                                |
| `full_number`           | string  | No        | Número completo de la factura (p. ej. `A-2025-0042`).   |
| `latest_for_contact_id` | integer | No        | Devuelve la factura más reciente del contacto indicado. |

***

### `create_invoice_draft`

Crea un borrador de factura ordinaria (F1). El borrador **no se emite**; usa `issue_invoice_draft` para hacerlo fiscalmente vinculante.

Devuelve el `draft_id`, un `confirmation_token` y una vista previa para mostrar al usuario antes de emitir.

| Parámetro                  | Tipo    | Requerido | Descripción                                                                          |
| -------------------------- | ------- | --------- | ------------------------------------------------------------------------------------ |
| `contact_id`               | integer | Sí        | Id del contacto. Usa `resolve_contact` para obtenerlo.                               |
| `lines`                    | array   | Sí        | Al menos una línea. Cada línea debe tener `product_id` o (`concept` + `unit_price`). |
| `lines[].product_id`       | integer | No        | Id del producto. Precarga concepto, precio y tipo de IVA.                            |
| `lines[].concept`          | string  | No\*      | Requerido si no hay `product_id`. Sobreescribe el valor del producto si se indica.   |
| `lines[].unit_price`       | number  | No\*      | Requerido si no hay `product_id`. Sobreescribe el valor del producto si se indica.   |
| `lines[].quantity`         | number  | No        | Por defecto `1`.                                                                     |
| `lines[].tax_rate`         | number  | No        | Sobreescribe el IVA del producto o el de la organización.                            |
| `lines[].discount_percent` | number  | No        | Descuento en porcentaje.                                                             |
| `operation_date`           | string  | No        | Fecha ISO-8601.                                                                      |
| `operation_description`    | string  | No        | Descripción de la operación.                                                         |
| `payment_method`           | string  | No        | Método de pago.                                                                      |
| `payment_method_info`      | string  | No        | Información adicional del método de pago.                                            |

***

### `create_simplified_invoice_draft`

Crea un borrador de factura simplificada (F2), sin contacto asociado. Útil para tickets o ventas al público en general.

Devuelve `draft_id`, `confirmation_token` y vista previa.

***

### `issue_invoice_draft`

<Warning>
  **Operación destructiva e irreversible.** Una vez emitida, la factura queda encadenada con hash y no puede modificarse ni eliminarse.
</Warning>

<Warning>
  Ten en cuenta que las facturas **no se enviarán a Verifactu** hasta que no envies la solicitud desde la plataforma.
</Warning>

Emite un borrador (F1 o F2), haciéndolo fiscalmente vinculante. La factura se envía automáticamente a Verifactu.

| Parámetro            | Tipo    | Requerido | Descripción                                                                          |
| -------------------- | ------- | --------- | ------------------------------------------------------------------------------------ |
| `draft_id`           | integer | Sí        | Id del borrador a emitir.                                                            |
| `confirmation_token` | string  | No        | Token devuelto por el paso de creación del borrador. Debe coincidir si fue generado. |
| `send_email`         | boolean | No        | Si es `true`, envía la factura emitida por correo al contacto. Por defecto `false`.  |

***

### `send_invoice_email`

Envía o reenvía una factura emitida por correo electrónico al contacto asociado.

| Parámetro           | Tipo    | Requerido | Descripción               |
| ------------------- | ------- | --------- | ------------------------- |
| `issued_invoice_id` | integer | Sí        | Id de la factura emitida. |

***

## Prompt

### `create_invoice`

Flujo guiado completo para emitir una factura. El agente resuelve el contacto y los productos, crea el borrador, presenta la vista previa y solicita confirmación explícita antes de emitir.
